API Management dönüştürme ilkeleri

Bu konu, aşağıdaki API Management ilkelerine yönelik bir başvuru sağlar. İlke ekleme ve yapılandırma hakkında daha fazla bilgi için bkz. API Management ilkeleri.

Dönüştürme ilkeleri

JSON 'ı XML 'e Dönüştür

json-to-xmlİlke, JSON 'DAN XML 'e bir istek veya yanıt gövdesi dönüştürür.

İlke ekstresi

<json-to-xml apply="always | content-type-json" consider-accept-header="true | false" parse-date="true | false"/>

Örnek

<policies>
    <inbound>
        <base />
    </inbound>
    <outbound>
        <base />
        <json-to-xml apply="always" consider-accept-header="false" parse-date="false"/>
    </outbound>
</policies>

Öğeler

Ad Açıklama Gerekli
JSON-XML Kök öğe. Yes

Öznitelikler

Ad Açıklama Gerekli Varsayılan
apply Özniteliğin aşağıdaki değerlerden birine ayarlanması gerekir.

-Always-her zaman dönüştürme uygula.
-Content-Type-JSON-yalnızca Response Content-Type üstbilgisi JSON varlığını gösteriyorsa Dönüştür.
Yes Yok
göz önünde bulundurun-üst bilgi Özniteliğin aşağıdaki değerlerden birine ayarlanması gerekir.

-true-istek kabul üst bilgisinde XML isteniyorsa dönüştürmeyi Uygula.
-false-dönüştürmeyi her zaman Uygula.
No true
ayrıştırma tarihi falseDate değerleri ayarlandığında, dönüştürme sırasında yalnızca kopyalanır No true

Kullanım

Bu ilke, aşağıdaki ilke bölümlerinde ve kapsamlardakullanılabilir.

  • İlke bölümleri: gelen, giden, hata üzerine

  • İlke kapsamları: tüm kapsamlar

XML 'i JSON 'ye Dönüştür

xml-to-jsonİlke bir isteği veya Yanıt GÖVDESINI XML 'den JSON 'a dönüştürür. Bu ilke, yalnızca XML arka uç Web Hizmetleri tabanlı API 'Leri modernleştirin için kullanılabilir.

İlke ekstresi

<xml-to-json kind="javascript-friendly | direct" apply="always | content-type-xml" consider-accept-header="true | false"/>

Örnek

<policies>
    <inbound>
        <base />
    </inbound>
    <outbound>
        <base />
        <xml-to-json kind="direct" apply="always" consider-accept-header="false" />
    </outbound>
</policies>

Öğeler

Ad Açıklama Gerekli
XML-JSON Kök öğe. Yes

Öznitelikler

Ad Açıklama Gerekli Varsayılan
denetlenmesi Özniteliğin aşağıdaki değerlerden birine ayarlanması gerekir.

-JavaScript kullanımı kolay-dönüştürülen JSON, JavaScript geliştiricilerine kolay bir form içerir.
-Direct-dönüştürülmüş JSON orijinal XML belgesinin yapısını yansıtır.
Yes Yok
apply Özniteliğin aşağıdaki değerlerden birine ayarlanması gerekir.

-her zaman daima Dönüştür.
-Content-Type-XML-yalnızca Response Content-Type üstbilgisi XML varlığını gösteriyorsa Dönüştür.
Yes Yok
göz önünde bulundurun-üst bilgi Özniteliğin aşağıdaki değerlerden birine ayarlanması gerekir.

-true-istek Accept üst bilgisinde JSON isteniyorsa dönüştürme uygulayın.
-false-dönüştürmeyi her zaman Uygula.
No true

Kullanım

Bu ilke, aşağıdaki ilke bölümlerinde ve kapsamlardakullanılabilir.

  • İlke bölümleri: gelen, giden, hata üzerine

  • İlke kapsamları: tüm kapsamlar

Gövdede dize bul ve Değiştir

find-and-replaceİlke bir istek veya Yanıt alt dizesi bulur ve farklı bir alt dizeyle değiştirir.

İlke ekstresi

<find-and-replace from="what to replace" to="replacement" />

Örnek

<find-and-replace from="notebook" to="laptop" />

Öğeler

Ad Açıklama Gerekli
bul ve Değiştir Kök öğe. Yes

Öznitelikler

Ad Açıklama Gerekli Varsayılan
değerini Aranacak dize. Yes Yok
kullanıcısı Değişim dizesi. Arama dizesini kaldırmak için sıfır uzunluğunda bir değiştirme dizesi belirtin. Yes Yok

Kullanım

Bu ilke, aşağıdaki ilke bölümlerinde ve kapsamlardakullanılabilir.

  • İlke bölümleri: gelen, giden, arka uç, hata durumunda

  • İlke kapsamları: tüm kapsamlar

İçerikte maske URL 'Leri

redirect-content-urlsAğ Geçidi aracılığıyla eşdeğer bağlantıyı işaret ettikleri için, yanıt gövdesindeki ilke yeniden yazma (maskeleri) bağlantıları. Yanıt gövdesi bağlantılarını, ağ geçidine işaret etmek üzere yeniden yazmak için çıkış bölümünde kullanın. Ters bir efekt için gelen bölümünde kullanın.

Not

Bu ilke, üst bilgiler gibi üst bilgi değerlerini değiştirmez Location . Üst bilgi değerlerini değiştirmek için, Set-Header ilkesini kullanın.

İlke ekstresi

<redirect-content-urls />

Örnek

<redirect-content-urls />

Öğeler

Ad Açıklama Gerekli
yeniden yönlendirme-içerik-URL 'ler Kök öğe. Yes

Kullanım

Bu ilke, aşağıdaki ilke bölümlerinde ve kapsamlardakullanılabilir.

  • İlke bölümleri: gelen, giden

  • İlke kapsamları: tüm kapsamlar

Arka uç hizmetini ayarla

set-backend-serviceGelen bir isteği, bu işlem IÇIN API ayarlarında belirtilenden farklı bir arka uca yeniden yönlendirmek için ilkeyi kullanın. Bu ilke, gelen isteğin arka uç hizmeti taban URL 'sini ilkede belirtilen bir şekilde değiştirir.

İlke ekstresi

<set-backend-service base-url="base URL of the backend service" />

veya

<set-backend-service backend-id="identifier of the backend entity specifying base URL of the backend service" />

Not

Arka uç varlıkları Azure Portal, Yönetim API 'sive PowerShellaracılığıyla yönetilebilir.

Örnek

<policies>
    <inbound>
        <choose>
            <when condition="@(context.Request.Url.Query.GetValueOrDefault("version") == "2013-05")">
                <set-backend-service base-url="http://contoso.com/api/8.2/" />
            </when>
            <when condition="@(context.Request.Url.Query.GetValueOrDefault("version") == "2014-03")">
                <set-backend-service base-url="http://contoso.com/api/9.1/" />
            </when>
        </choose>
        <base />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

Bu örnekte, arka uç hizmet ilkesi, sorgu dizesinde geçirilen sürüm değerine bağlı olarak istekleri API 'de belirtilenden farklı bir arka uç hizmetine yönlendirir.

Başlangıçta arka uç hizmeti temel URL 'si API ayarlarından türetilir. Bu nedenle, istek URL 'si https://contoso.azure-api.net/api/partners/15?version=2013-05&subscription-key=abcdef http://contoso.com/api/10.4/partners/15?version=2013-05&subscription-key=abcdef http://contoso.com/api/10.4/ API ayarlarında arka uç hizmeti URL 'si olarak belirtilir.

<Select Policy deyimin seçimi > uygulandığında, arka uç hizmeti taban URL 'si, http://contoso.com/api/8.2 http://contoso.com/api/9.1 Sürüm isteği sorgu parametresinin değerine bağlı olarak ya da olarak yeniden değişebilir. Örneğin, değer "2013-15" son istek URL 'si ise olur http://contoso.com/api/8.2/partners/15?version=2013-05&subscription-key=abcdef .

İsteğin daha fazla dönüşümü isteniyorsa, diğer dönüştürme ilkeleri de kullanılabilir. Örneğin, isteğin sürüme özgü bir arka uca yönlendirildiğini artık sürüm sorgu parametresini kaldırmak için, artık gereksiz sürüm özniteliğini kaldırmak üzere sorgu dizesi ayarla parametresi ilkesi kullanılabilir.

Örnek

<policies>
    <inbound>
        <set-backend-service backend-id="my-sf-service" sf-partition-key="@(context.Request.Url.Query.GetValueOrDefault("userId","")" sf-replica-type="primary" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

Bu örnekte ilke, bir Service Fabric arka ucuna, bölüm anahtarı olarak UserID sorgu dizesini ve bölümün birincil çoğaltmasını kullanarak isteği yönlendirir.

Öğeler

Ad Açıklama Gerekli
küme arka uç hizmeti Kök öğe. Yes

Öznitelikler

Ad Açıklama Gerekli Varsayılan
taban URL 'si Yeni arka uç hizmeti temel URL 'SI. Bunlardan biri base-url backend-id mevcut olmalıdır. Yok
arka uç kimliği Yönlendirileceği arka ucun tanımlayıcısı. (Arka uç varlıkları Azure Portal, APIve PowerShellaracılığıyla yönetilir.) Bunlardan biri base-url backend-id mevcut olmalıdır. Yok
BT-bölüm-anahtar yalnızca arka uç bir Service Fabric hizmeti olduğunda ve ' arka uç kimliği ' kullanılarak belirtildiğinde geçerlidir. Ad çözümleme hizmetinden belirli bir bölümü çözümlemek için kullanılır. No Yok
SF-Replication-Type yalnızca arka uç bir Service Fabric hizmeti olduğunda ve ' arka uç kimliği ' kullanılarak belirtildiğinde geçerlidir. İsteğin bir bölümün birincil veya ikincil çoğaltmaya gitmesi gerekip gerekmediğini denetler. No Yok
SF-Resolve-koşul Yalnızca arka uç bir Service Fabric hizmeti olduğunda geçerlidir. Service Fabric arka uca çağrının yeni çözümlenerek tekrarlanması gerektiğini belirleyen koşul. No Yok
SF-Service-örnek-adı Yalnızca arka uç bir Service Fabric hizmeti olduğunda geçerlidir. Çalışma zamanında hizmet örneklerinin değiştirilmesine izin verir. No Yok
SF-Listener-adı yalnızca arka uç bir Service Fabric hizmeti olduğunda ve ' arka uç kimliği ' kullanılarak belirtildiğinde geçerlidir. Service Fabric Reliable Services, bir hizmette birden çok dinleyici oluşturmanıza olanak sağlar. Bu öznitelik, bir arka uç güvenilir hizmeti birden fazla dinleyiciye sahip olduğunda belirli bir dinleyiciyi seçmek için kullanılır. Bu öznitelik belirtilmezse, API Management adı olmayan bir dinleyici kullanmayı dener. Adı olmayan dinleyiciler, yalnızca bir Reliable Services olan tüm dinleyiciler için normaldir. No Yok

Kullanım

Bu ilke aşağıdaki ilke bölümlerinde ve kapsamlarında kullanılabilir.

  • İlke bölümleri: gelen, arka uç

  • İlke kapsamları: tüm kapsamlar

Gövdeyi ayarla

set-bodyİlkeyi kullanarak gelen ve giden isteklerin ileti gövdelerini ayarlayın. İleti gövdesine erişmek için, ilkenin gelen veya giden bölümünde olup olmadığını bağlı olarak özelliğini context.Request.Body context.Response.Body veya kullanabilirsiniz.

Önemli

veya kullanarak ileti gövdesine erişerek varsayılan olarak özgün ileti gövdesinin kaybedil olduğunu ve gövdeyi ifadeye geri döndürerek context.Request.Body context.Response.Body ayar gerektiğini unutmayın. Gövde içeriğini korumak için, iletiye preserveContent erişirken true parametresini olarak ayarlayın. olarak preserveContent true ayarlanırsa ve ifade tarafından farklı bir gövde döndürülürse, döndürülen gövde kullanılır.

İlkeyi kullanırken lütfen aşağıdaki noktalara dikkat set-body edin.

  • İlkeyi yeni veya güncelleştirilmiş bir gövdeyi iade etmek için kullanıyorsanız, yeni gövde içeriğini açıkça sağlarken olarak set-body preserveContent true ayarlamaya gerek yok.
    • Gelen işlem hattında yanıtın içeriğinin korunması mantıklı değildir çünkü henüz yanıt yoktur.
    • Giden işlem hattında bir isteğin içeriğinin korunması anlamlı değildir çünkü istek bu noktada arka uçta zaten gönderilmiştir.
    • Bu ilke, örneğin gelen GET'de ileti gövdesi yoksa bir özel durum oluşturur.

Daha fazla bilgi için context.Request.Body Bağlam değişkeni tablosunda , ve context.Response.Body IMessage bölümlerine bakın.

İlke deyimi

<set-body>new body value as text</set-body>

Örnekler

Değişmez metin örneği

<set-body>Hello world!</set-body>

Gövdeye dize olarak erişme örneği. Özgün istek gövdesinde daha sonra işlem hattında erişime izin veremek için bu gövdeyi koruruz.

<set-body>
@{ 
    string inBody = context.Request.Body.As<string>(preserveContent: true); 
    if (inBody[0] =='c') { 
        inBody[0] = 'm'; 
    } 
    return inBody; 
}
</set-body>

Gövdeye JObject olarak erişme örneği. Özgün istek gövdesini korumamamız nedeniyle işlem hattında daha sonra bu gövdeye erişirken bir özel durumla sonuçlanmayacaktır.

<set-body> 
@{ 
    JObject inBody = context.Request.Body.As<JObject>(); 
    if (inBody.attribute == <tag>) { 
        inBody[0] = 'm'; 
    } 
    return inBody.ToString(); 
} 
</set-body>

Yanıtı ürüne göre filtreleme

Bu örnekte, ürün kullanılırken arka uç hizmetten alınan yanıttan veri öğelerini kaldırarak içerik filtrelemenin nasıl gerçekleştir olduğu Starter gösterir. Bu ilkeyi yapılandırmanın ve kullanmanın bir gösterimi için bkz. Cloud Cover Bölüm 177: More API Management Features with Vinogradsky ve fast-forward to 34:30. Bu tanıtım için kullanılan The Dark Sky Forecast API'sini görmek için 31:50'de çalışmaya başlayabilirsiniz.

<!-- Copy this snippet into the outbound section to remove a number of data elements from the response received from the backend service based on the name of the api product -->
<choose>
  <when condition="@(context.Response.StatusCode == 200 && context.Product.Name.Equals("Starter"))">
    <set-body>@{
        var response = context.Response.Body.As<JObject>();
        foreach (var key in new [] {"minutely", "hourly", "daily", "flags"}) {
          response.Property (key).Remove ();
        }
        return response.ToString();
      }
    </set-body>
  </when>
</choose>

Liquid şablonlarını küme gövdesiyle kullanma

İlke, bir isteğin veya yanıtın gövdesini dönüştürmek için set-body Liquid templating dilini kullanmak üzere yalıt edilebilir. İletinizin biçimini tamamen yeniden şekillendirmeniz gerekirse bu çok etkili olabilir.

Önemli

İlkede kullanılan Liquid set-body uygulaması 'C# modunda' yapılandırılır. Bu, filtreleme gibi şeyler yaparken özellikle önemlidir. Örneğin, tarih filtresi kullanmak için Pascal büyük/küçük casing ve C# tarih biçimlendirmesi gerekir, örneğin:

{{body.foo.startDateTime| Date:"yyyyMMddTHH:mm:ssZ"}}

Önemli

Liquid şablonunu kullanarak xml gövdesine doğru şekilde bağlamak için, Content-Type'u application/xml, text/xml (veya +xml ile biten herhangi bir tür) olarak ayarlamak üzere bir ilke kullanın; JSON gövdesi için set-header application/json, text/json (veya +json ile biten herhangi bir tür) olması gerekir.

Liquid şablonu kullanarak JSON'u SOAP'ye dönüştürme

<set-body template="liquid">
    <soap:Envelope xmlns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
            <GetOpenOrders>
                <cust>{{body.getOpenOrders.cust}}</cust>
            </GetOpenOrders>
        </soap:Body>
    </soap:Envelope>
</set-body>

Liquid şablonu kullanarak JSON dönüştürme

{
"order": {
    "id": "{{body.customer.purchase.identifier}}",
    "summary": "{{body.customer.purchase.orderShortDesc}}"
    }
}

Öğeler

Ad Açıklama Gerekli
set-body Kök öğe. Gövde metnini veya gövde döndüren ifadeleri içerir. Yes

Özellikler

Ad Açıklama Gerekli Varsayılan
şablon Ayarlanmış gövde ilkesinde çalıştıracak olan templating modunu değiştirmek için kullanılır. Şu anda desteklenen tek değer şu şekildedir:

- liquid - ayar gövdesi ilkesi liquid templating altyapısını kullanır
No

Liquid şablonu, istek ve yanıtla ilgili bilgilere erişmek için aşağıdaki özelliklere sahip bir bağlam nesnesine bağlanabilir:

context.
    Request.
        Url
        Method
        OriginalMethod
        OriginalUrl
        IpAddress
        MatchedParameters
        HasBody
        ClientCertificates
        Headers

    Response.
        StatusCode
        Method
        Headers
Url.
    Scheme
    Host
    Port
    Path
    Query
    QueryString
    ToUri
    ToString

OriginalUrl.
    Scheme
    Host
    Port
    Path
    Query
    QueryString
    ToUri
    ToString

Kullanım

Bu ilke aşağıdaki ilke bölümlerinde ve kapsamlarında kullanılabilir.

  • İlke bölümleri: gelen, giden, arka uç

  • İlke kapsamları: tüm kapsamlar

HTTP üst bilgisi ayarlama

İlke, mevcut yanıt ve/veya istek üst bilgisinde bir değer set-header atar ya da yeni bir yanıt ve/veya istek üst bilgisi ekler.

BIR HTTP iletisine HTTP üst bilgileri listesi ekler. Gelen işlem hattına yerleştirilseniz, bu ilke hedef hizmete geçirilen isteğin HTTP üst bilgilerini ayarlar. Giden işlem hattına yerleştirilseniz, bu ilke ağ geçidinin istemcisine gönderilen yanıtın HTTP üst bilgilerini ayarlar.

İlke deyimi

<set-header name="header name" exists-action="override | skip | append | delete">
    <value>value</value> <!--for multiple headers with the same name add additional value elements-->
</set-header>

Örnekler

Örnek - üst bilgi ekleme, var olan verileri geçersiz kılma

<set-header name="some header name" exists-action="override">
    <value>20</value>
</set-header>

Örnek - üst bilgi kaldırma

 <set-header name="some header name" exists-action="delete" />

Bağlam bilgilerini arka uç hizmetine iletme

Bu örnekte, arka uç hizmetine bağlam bilgileri sağlamak için ILKEnin API düzeyinde nasıl uygulanacakları gösterir. Bu ilkeyi yapılandırmanın ve kullanmanın bir gösterimi için bkz. Cloud Cover Bölüm 177: More API Management Features with Vinogradsky ve fast-forward to 10:30. Saat 12:10'da, geliştirici portalında ilkeyi iş yerinde gördüğünüz bir işlemi çağırma demosu vardır.

<!-- Copy this snippet into the inbound element to forward some context information, user id and the region the gateway is hosted in, to the backend service for logging or evaluation -->
<set-header name="x-request-context-data" exists-action="override">
  <value>@(context.User.Id)</value>
  <value>@(context.Deployment.Region)</value>
</set-header>

Daha fazla bilgi için bkz. İlke ifadeleri ve Bağlam değişkeni.

Not

Bir üst bilginin birden çok değeri bir CSV dizesiyle birtir, örneğin: headerName: value1,value2,value3

Özel durumlar, şu değerleri içeren standartlaştırılmış üst bilgileri içerir:

  • virgül ( User-Agent , WWW-Authenticate , ), Proxy-Authenticate içerebilir
  • tarih ( Cookie , Set-Cookie , ), Warning içerebilir
  • tarih ( Date , , , , , ) Expires If-Modified-Since If-Unmodified-Since Last-Modified Retry-After içerir.

Bu özel durumlar durumunda, birden çok üst bilgi değeri tek bir dizede birlanmaz ve ayrı üst bilgi olarak geçirir, örneğin: User-Agent: value1 User-Agent: value2 User-Agent: value3

Öğeler

Ad Açıklama Gerekli
set-header Kök öğe. Yes
değer Ayarlanacak üst bilginin değerini belirtir. Aynı adda birden çok üst bilgi için ek öğeler value ekleyin. No

Özellikler

Ad Açıklama Gerekli Varsayılan
var-eylem Üstbilgi zaten belirtildiğinde gerçekleştirilecek eylemi belirtir. Bu öznitelik aşağıdaki değerlerden birine sahip olmalıdır.

-override-mevcut üstbilginin değerini değiştirir.
-Skip-mevcut üst bilgi değerini değiştirmez.
-Append-değeri varolan üst bilgi değerine ekler.
-Delete-üstbilgiyi istekten kaldırır.

overrideAynı ada sahip birden çok girdiyi listelemek üzere ayarlandığında, üstbilgi tüm girişlere göre ayarlanmakta (birden çok kez listelenecektir), ancak sonuçlarda listelenen değerler ayarlanır.
No override
name Ayarlanacak üst bilginin adını belirtir. Yes Yok

Kullanım

Bu ilke, aşağıdaki ilke bölümlerinde ve kapsamlardakullanılabilir.

  • İlke bölümleri: gelen, giden, arka uç, hata durumunda

  • İlke kapsamları: tüm kapsamlar

Sorgu dizesi parametresini ayarla

set-query-parameterİlke, değer ekler veya siler veya istek sorgu dizesi parametresini siler. İsteğe bağlı olan veya istekte hiçbir şekilde bulunmayan arka uç hizmeti tarafından beklenen sorgu parametrelerini geçirmek için kullanılabilir.

İlke ekstresi

<set-query-parameter name="param name" exists-action="override | skip | append | delete">
    <value>value</value> <!--for multiple parameters with the same name add additional value elements-->
</set-query-parameter>

Örnek


<set-query-parameter name="api-key" exists-action="skip">
  <value>12345678901</value>
</set-query-parameter>

Bağlam bilgilerini arka uç hizmetine ilet

Bu örnek, arka uç hizmetine bağlam bilgilerini sağlamak üzere API düzeyinde ilkenin nasıl uygulanacağını gösterir. Bu ilkeyi yapılandırma ve kullanma gösterimi için bkz. Cloud Cover bölüm 177: Vlad Vinogradsky Ile daha fazla API Management özelliği ve 10:30 ile ileri sarma. 12:10 ' de, bir işlemi iş üzerindeki ilkeyi görebileceğiniz Geliştirici Portalında çağırma tanıtımı vardır.

<!-- Copy this snippet into the inbound element to forward a piece of context, product name in this example, to the backend service for logging or evaluation -->
<set-query-parameter name="x-product-name" exists-action="override">
  <value>@(context.Product.Name)</value>
</set-query-parameter>

Daha fazla bilgi için bkz. ilke ifadeleri ve bağlam değişkeni.

Öğeler

Ad Açıklama Gerekli
Set-Query-Parameter Kök öğe. Yes
değer Ayarlanacak sorgu parametresi değerini belirtir. Aynı ada sahip birden çok sorgu parametresi için ek value öğeler ekleyin. Yes

Özellikler

Ad Açıklama Gerekli Varsayılan
var-eylem Sorgu parametresi önceden belirtildiğinde gerçekleştirilecek eylemi belirtir. Bu öznitelik aşağıdaki değerlerden birine sahip olmalıdır.

-override-var olan parametrenin değerini değiştirir.
-Skip-var olan sorgu parametresi değerinin yerini almaz.
-Append-değeri varolan sorgu parametresi değerine ekler.
-Delete-sorgu parametresini istekten kaldırır.

overrideAynı ada sahip birden çok girdiyi listelemek üzere ayarlandığında, sorgu parametresi tüm girişlere göre ayarlanmakta (birden çok kez listelenecektir), ancak sonuçlarda listelenen değerler ayarlanır.
No override
name Ayarlanacak sorgu parametresinin adını belirtir. Yes Yok

Kullanım

Bu ilke, aşağıdaki ilke bölümlerinde ve kapsamlardakullanılabilir.

  • İlke bölümleri: gelen, arka uç

  • İlke kapsamları: tüm kapsamlar

Yeniden yazma URL 'SI

rewrite-uriİlke, aşağıdaki örnekte gösterildiği gibi, bir Istek URL 'sini ortak formdan Web hizmeti tarafından beklenen biçime dönüştürür.

  • Genel URL- http://api.example.com/storenumber/ordernumber

  • İstek URL 'SI- http://api.example.com/v2/US/hardware/storenumber&ordernumber?City&State

    Bu ilke, bir insan ve/veya tarayıcı kullanımı kolay URL 'SI Web hizmeti tarafından beklenen URL biçimine dönüştürülebileceğinden kullanılabilir. Bu ilkenin yalnızca bir sorgu dizesi içermeyen ve bunun yerine yalnızca kaynağın yolunu (düzen ve yetkilinin ardından) içeren, temiz URL 'ler, yeniden oluşturma URL 'leri, Kullanıcı dostu URL 'ler veya SEO kullanımı kolay URL 'ler gibi alternatif bir URL biçimi kullanıma sunulduktan sonra uygulanması gerekir. Bu genellikle Aesthetic Characteristics, kullanılabilirlik veya arama motoru iyileştirme (SEO) amaçları için yapılır.

Not

Yalnızca ilkeyi kullanarak sorgu dizesi parametreleri ekleyebilirsiniz. Yeniden yazma URL 'sine ek şablon yolu parametreleri ekleyemezsiniz.

İlke ekstresi

<rewrite-uri template="uri template" copy-unmatched-params="true | false" />

Örnek

<policies>
    <inbound>
        <base />
        <rewrite-uri template="/v2/US/hardware/{storenumber}&{ordernumber}?City=city&State=state" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>
<!-- Assuming incoming request is /get?a=b&c=d and operation template is set to /get?a={b} -->
<policies>
    <inbound>
        <base />
        <rewrite-uri template="/put" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>
<!-- Resulting URL will be /put?c=d -->
<!-- Assuming incoming request is /get?a=b&c=d and operation template is set to /get?a={b} -->
<policies>
    <inbound>
        <base />
        <rewrite-uri template="/put" copy-unmatched-params="false" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>
<!-- Resulting URL will be /put -->

Öğeler

Ad Açıklama Gerekli
yeniden yazma-URI Kök öğe. Yes

Öznitelikler

Öznitelik Açıklama Gerekli Varsayılan
şablon Herhangi bir sorgu dizesi parametresine sahip gerçek Web hizmeti URL 'SI. İfadeler kullanılırken, tüm değer bir ifade olmalıdır. Yes Yok
kopya-eşleşmeyen-params Gelen istekteki sorgu parametrelerinin özgün URL şablonunda mevcut değil olarak yeniden yazma şablonu tarafından tanımlanan URL 'ye eklenip eklenmeyeceğini belirtir No true

Kullanım

Bu ilke, aşağıdaki ilke bölümlerinde ve kapsamlardakullanılabilir.

  • İlke bölümleri: gelen

  • İlke kapsamları: tüm kapsamlar

XSLT kullanarak XML dönüştürme

Transform XML using an XSLTİlke, istek veya Yanıt GÖVDESINDE XML 'e BIR XSL dönüştürmesi uygular.

İlke deyimi

<xsl-transform>
    <parameter name="User-Agent">@(context.Request.Headers.GetValueOrDefault("User-Agent","non-specified"))</parameter>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="xml" indent="yes" />
        <xsl:param name="User-Agent" />
        <xsl:template match="* | @* | node()">
            <xsl:copy>
                <xsl:if test="self::* and not(parent::*)">
                    <xsl:attribute name="User-Agent">
                        <xsl:value-of select="$User-Agent" />
                    </xsl:attribute>
                </xsl:if>
                <xsl:apply-templates select="* | @* | node()" />
            </xsl:copy>
        </xsl:template>
    </xsl:stylesheet>
  </xsl-transform>

Örnek

<policies>
  <inbound>
      <base />
  </inbound>
  <outbound>
      <base />
      <xsl-transform>
          <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
            <xsl:output omit-xml-declaration="yes" method="xml" indent="yes" />
            <!-- Copy all nodes directly-->
            <xsl:template match="node()| @*|*">
                <xsl:copy>
                    <xsl:apply-templates select="@* | node()|*" />
                </xsl:copy>
            </xsl:template>
          </xsl:stylesheet>
    </xsl-transform>
  </outbound>
</policies>

Öğeler

Ad Açıklama Gerekli
xsl-transform Kök öğe. Yes
parametre Dönüştürmede kullanılan değişkenleri tanımlamak için kullanılır No
xsl:stylesheet Kök stil sayfası öğesi. içinde tanımlanan tüm öğeler ve öznitelikler standart XSLT belirtimini izleyin Yes

Kullanım

Bu ilke aşağıdaki ilke bölümlerinde ve kapsamlarında kullanılabilir.

  • İlke bölümleri: gelen, giden

  • İlke kapsamları: tüm kapsamlar

Sonraki adımlar

Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın: