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
Kaynak 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 belirtilmemişse API Management, ad olmadan bir dinleyici kullanmayı dener. Adı olmayan bir dinleyici, yalnızca bir dinleyici içeren Reliable Services için tipik bir addır. No 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

Gövde ayarla

set-bodyGelen ve giden istekler için ileti gövdesini ayarlamak üzere ilkesini kullanın. İleti gövdesine erişmek için, context.Request.Body context.Response.Body ilkenin gelen veya giden bölümünde olup olmadığına bağlı olarak özelliğini veya ' i kullanabilirsiniz.

Önemli

Varsayılan olarak, veya kullanarak ileti gövdesine eriştiğinizde context.Request.Body context.Response.Body , özgün ileti gövdesinin kaybedildiğini ve gövdeye geri dönerek gövde döndürülerek ayarlanması gerektiğini unutmayın. Gövde içeriğini korumak için, preserveContent iletiye erişirken parametresini olarak ayarlayın true . preserveContentOlarak ayarlıysa true ve ifade tarafından farklı bir gövde döndürülürse, döndürülen gövde kullanılır.

Lütfen ilkeyi kullanırken aşağıdaki noktalara dikkat edin set-body .

  • Yeni set-body veya güncelleştirilmiş bir gövdeye geri dönmek için ilkeyi kullanıyorsanız, preserveContent true Yeni gövde içeriğini açıkça tedarik ettiğiniz için ' a ayarlamanız gerekmez.
    • Henüz yanıt bulunmadığından, gelen işlem hattındaki bir yanıtın içeriğini korumak anlamlı değildir.
    • İstek bu noktada arka uca zaten gönderildiğinden, giden işlem hattındaki bir isteğin içeriğini korumak mantıklı değildir.
    • Bu ilke, bir ileti gövdesi olmadığında (örneğin, gelen GET içinde kullanılırsa) bir özel durum oluşturulur.

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

İlke ekstresi

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

Örnekler

Değişmez değer metin örneği

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

Bir dize olarak gövdeye erişen örnek. İşlem hattında daha sonra erişebilmemiz için özgün istek gövdesini koruma yaptık.

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

Bir JObject olarak gövdeye erişen örnek. Özgün istek gövdesini ayırdığımızdan, daha sonra işlem hattının daha sonra erişilmesi için bir özel durumla sonuçlandığına unutmayın.

<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 filtrele

Bu örnek, ürünü kullanırken arka uç hizmetinden alınan yanıttan veri öğelerini kaldırarak içerik filtrelemenin nasıl gerçekleştirileceğini gösterir Starter . 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 34:30 ile ileri sarma. Bu demo için kullanılan koyu gök tahmini API 'sine ilişkin bir genel bakış görmek için 31:50 adresinden başlayın.

<!-- 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>

Set Body ile sıvı şablonları kullanma

set-bodyİlke, bir isteğin veya yanıtın gövdesini dönüştürmek Için likit şablon oluşturma dilini kullanacak şekilde yapılandırılabilir. İletinizin biçimini tamamen yeniden şekillendirmenizi gerektiren bu, çok etkili olabilir.

Önemli

İlkede kullanılan likit 'in uygulanması set-body ' C# Mode ' içinde yapılandırıldı. Filtreleme gibi şeyler yaparken bu özellikle önemlidir. Örnek olarak, bir tarih filtresi kullanmak için, Pascal büyük harfleri ve C# Tarih biçimlendirmesinin kullanılması gerekir, örneğin:

{{Body. foo. startDateTime | Tarih: "yyyyMMddTHH: mm: ssZ"}}

Önemli

Sıvı şablonunu kullanarak bir XML gövdesine doğru bir şekilde bağlamak için bir set-header ilke kullanarak Içerik türünü Application/XML, Text/XML (veya + XML ile biten herhangi bir tür) olarak ayarlayın; BIR JSON gövdesi için uygulama/JSON, metin/JSON (veya + JSON ile biten herhangi bir tür) olmalıdır.

Sıvı şablonu kullanarak JSON 'ı 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>

Sıvı şablonu kullanarak JSON dönüştürme

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

Öğeler

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

Özellikler

Ad Açıklama Gerekli Varsayılan
şablon Set Body ilkesinin çalışacağı şablon oluşturma modunu değiştirmek için kullanılır. Şu anda desteklenen tek değer:

-sıvı-Set Body ilkesi likit şablon oluşturma altyapısını kullanacaktır
No

İstek ve yanıt hakkındaki bilgilere erişmek için, sıvı şablonu aşağıdaki özelliklerle 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 kapsamlardakullanılabilir.

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

  • İlke kapsamları: tüm kapsamlar

HTTP üstbilgisini ayarla

set-headerİlke, var olan bir yanıt ve/veya istek üstbilgisine bir değer atar veya yeni bir yanıt ve/veya istek üst bilgisi ekler.

Http üstbilgilerinin bir listesini bir HTTP iletisine ekler. Gelen bir işlem hattına yerleştirildiğinde, bu ilke hedef hizmete geçirilmekte olan isteğin HTTP üst bilgilerini ayarlar. Giden bir işlem hattına yerleştirildiğinde, bu ilke ağ geçidinin istemcisine gönderilen yanıtın HTTP üst bilgilerini ayarlar.

İlke ekstresi

<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-üstbilgi ekleniyor, Varolanı geçersiz kıl

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

Örnek-üst bilgi kaldırılıyor

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

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 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. ilke ifadeleri ve bağlam değişkeni.

Not

Bir üstbilginin birden fazla değeri bir CSV dizesine birleştirilir, örneğin: headerName: value1,value2,value3

Özel durumlar standartlaştırılmış üst bilgiler, bu değerleri içerir:

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

Bu özel durumlar söz konusu olduğunda, birden çok üstbilgi değeri tek bir dizeye birleştirmeyecektir ve ayrı üstbilgiler olarak geçirilir, ö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ı ada sahip birden çok üstbilgi için ek value öğeler 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 ekstresi

<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 dönüştürme Kök öğe. Yes
parametre Dönüşümde kullanılan değişkenleri tanımlamak için kullanılır No
xsl: StyleSheet Kök stil sayfası öğesi. İçinde tanımlanan tüm öğeler ve öznitelikler standart XSLT belirtimine uyar 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

Sonraki adımlar

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