API Management dönüştürme ilkeleri

Bu makalede, API isteklerini veya yanıtlarını dönüştürmek için kullanılan API Management ilkeleri için bir başvuru sağlanır.

İlkeler hakkında daha fazla bilgi:

Dönüştürme ilkeleri

Convert JSON to XML

İlke json-to-xml bir isteği veya yanıt gövdesini JSON'dan XML'ye dönüştürür.

Not

İlkenin öğelerini ve alt öğelerini ilke deyiminde sağlanan sırayla ayarlayın. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.

İlke bildirimi

<json-to-xml 
    apply="always | content-type-json" 
    consider-accept-header="true | false" 
    parse-date="true | false" 
    namespace-separator="separator character"
    attribute-block-name="name" />

Örnek

Aşağıdaki ilkeyi göz önünde bulundurun:

<policies>
    <inbound>
        <base />
    </inbound>
    <outbound>
        <base />
        <json-to-xml apply="always" consider-accept-header="false" parse-date="false" namespace-separator=":" attribute-block-name="#attrs" />
    </outbound>
</policies>

Arka uç aşağıdaki JSON'yi döndürürse:

{
  "soapenv:Envelope": {
    "xmlns:soapenv": "http://schemas.xmlsoap.org/soap/envelope/",
    "xmlns:v1": "http://localdomain.com/core/v1",
    "soapenv:Header": {},
    "soapenv:Body": {
      "v1:QueryList": {
        "#attrs": {
          "queryName": "test"
        },
        "v1:QueryItem": {
          "name": "dummy text"
        }
      }
    }
  }
}

İstemciye XML yanıtı şu şekilde olacaktır:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://localdomain.com/core/v1">
  <soapenv:Header />
  <soapenv:Body>
    <v1:QueryList queryName="test">
      <name>dummy text</name>
    </v1:QueryList>
  </soapenv:Body>
</soapenv:Envelope>

Öğeler

Ad Açıklama Gerekli
json-to-xml Kök öğesi. Yes

Öznitelikler

Ad Açıklama Gerekli Varsayılan
apply özniteliği aşağıdaki değerlerden birine ayarlanmalıdır.

- her zaman - her zaman dönüştürme uygulayın.
- content-type-json - yalnızca yanıt content-type üst bilgisi JSON varlığını gösteriyorsa dönüştürün.
Yes Yok
consider-accept-header özniteliği aşağıdaki değerlerden birine ayarlanmalıdır.

- true - İstek Accept üst bilgisinde XML istenirse dönüştürmeyi uygulayın.
- false -her zaman dönüştürmeyi uygula.
No true
ayrıştırma tarihi Tarihe false ayarlandığında değerler dönüştürme sırasında kopyalanır No true
ad alanı ayırıcısı Ad alanı ayırıcısı olarak kullanılacak karakter No Alt çizgi
attribute-block-name Ayarlandığında, adlandırılmış nesnenin içindeki özellikler öğeye öznitelik olarak eklenir No Ayarlı değil

Kullanım

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

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

  • İlke kapsamları: tüm kapsamlar

XML'yi JSON'a dönüştür

İlke, xml-to-json isteği veya yanıt gövdesini XML'den JSON'a dönüştürür. Bu ilke, API'leri yalnızca XML arka uç web hizmetlerine göre modernleştirmek için kullanılabilir.

Not

İlkenin öğelerini ve alt öğelerini ilke deyiminde sağlanan sırayla ayarlayın. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.

İlke bildirimi

<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-to-json Kök öğesi. Yes

Öznitelikler

Ad Açıklama Gerekli Varsayılan
Tür özniteliği aşağıdaki değerlerden birine ayarlanmalıdır.

- javascript dostu - dönüştürülen JSON, JavaScript geliştiricileri için kolay bir biçime sahiptir.
- doğrudan - dönüştürülen JSON özgün XML belgesinin yapısını yansıtır.
Yes Yok
apply özniteliği aşağıdaki değerlerden birine ayarlanmalıdır.

- her zaman - her zaman dönüştürün.
- content-type-xml - yalnızca yanıt Content-Type üst bilgisi XML varlığını gösteriyorsa dönüştürün.
Yes Yok
consider-accept-header özniteliği aşağıdaki değerlerden birine ayarlanmalıdır.

- true - İstek Accept üst bilgisinde JSON istenirse dönüştürmeyi uygulayın.
- false -her zaman dönüştürmeyi uygula.
No true

Kullanım

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

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

  • İlke kapsamları: tüm kapsamlar

Find and replace string in body

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

Not

İlkenin öğelerini ve alt öğelerini ilke deyiminde sağlanan sırayla ayarlayın. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.

İlke bildirimi

<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 öğesi. 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 uzunluklu bir değiştirme dizesi belirtin. Yes Yok

Kullanım

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

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

  • İlke kapsamları: tüm kapsamlar

İçerikteki URL'leri maskele

İlke redirect-content-urls , yanıt gövdesindeki bağlantıları yeniden yazar (maskeler), böylece ağ geçidi üzerinden eşdeğer bağlantıya işaret eder. Yanıt gövdesi bağlantılarını yeniden yazarak ağ geçidine işaret etmelerini sağlamak için giden bölümünde kullanın. Ters etki için gelen bölümünde kullanın.

Not

Bu ilke üst bilgi gibi Location üst bilgi değerlerini değiştirmez. Üst bilgi değerlerini değiştirmek için set-header ilkesini kullanın.

Not

İlkenin öğelerini ve alt öğelerini ilke deyiminde sağlanan sırayla ayarlayın. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.

İlke bildirimi

<redirect-content-urls />

Örnek

<redirect-content-urls />

Öğeler

Ad Açıklama Gerekli
redirect-content-urls Kök öğesi. 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

Arka uç hizmetini ayarla

İlkeyi set-backend-service kullanarak gelen isteği bu işlemin API ayarlarında belirtilenden farklı bir arka uçta yeniden yönlendirin. Bu ilke, gelen isteğin arka uç hizmet temel URL'sini ilkede belirtilen istekle değiştirir.

Not

İlkenin öğelerini ve alt öğelerini ilke deyiminde sağlanan sırayla ayarlayın. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.

İlke bildirimi

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

veya

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

Not

Arka uç varlıkları Azure portal, yönetim API'si ve PowerShell aracılığıyla yönetilebilir. Şu anda, özniteliğini backend-id kullanarak bir temel set-backend-service ilke tanımlarsanız ve temel ilkeyi kapsamında kullanarak <base /> devralırsanız, özniteliğini değilbase-url, yalnızca özniteliğini backend-id kullanan bir ilkeyle geçersiz kılınabilir.

Ö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 küme arka uç hizmet ilkesi, sorgu dizesinde geçirilen sürüm değerine göre istekleri API'de belirtilenden farklı bir arka uç hizmetine yönlendirir.

Başlangıçta arka uç hizmet 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 , API ayarlarında belirtilen arka uç hizmet URL'si olur http://contoso.com/api/10.4/partners/15?version=2013-05&subscription-key=abcdefhttp://contoso.com/api/10.4/ .

İlke< seçme> deyimi uygulandığında arka uç hizmet temel URL'si, sürüm isteği sorgu parametresinin değerine bağlı olarak veya http://contoso.com/api/9.1olarak yeniden http://contoso.com/api/8.2 değiştirilebilir. Ö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üştürülmesi istenirse, diğer Dönüştürme ilkeleri kullanılabilir. Örneğin, istek belirli bir sürüm arka ucuna yönlendirildiğine göre sürüm sorgusu parametresini kaldırmak için Sorgu dizesi parametreyi ayarla ilkesi artık yedekli sürüm özniteliğini kaldırmak için 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, bölüm anahtarı olarak userId sorgu dizesini ve bölümün birincil çoğaltmasını kullanarak isteği bir service fabric arka ucuna yönlendirir.

Öğeler

Ad Açıklama Gerekli
set-backend-service Kök öğesi. Yes

Öznitelikler

Ad Açıklama Gerekli Varsayılan
temel url Yeni arka uç hizmet temel URL'si. base-urlbackend-id Veya bunlardan biri mevcut olmalıdır. Yok
arka uç kimliği Yönlendirecek arka ucun tanımlayıcısı (adı). (Arka uç varlıkları Azure portal, API ve PowerShell aracılığıyla yönetilir.) base-urlbackend-id Veya bunlardan biri mevcut olmalıdır. Yok
sf-partition-key Yalnızca arka uç bir Service Fabric hizmeti olduğunda ve 'backend-id' 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-replica-type Yalnızca arka uç bir Service Fabric hizmeti olduğunda ve 'backend-id' kullanılarak belirtildiğinde geçerlidir. İsteğin bir bölümün birincil veya ikincil çoğaltmasına gidip gitmediğini denetler. No Yok
sf-resolve-condition Yalnızca arka uç bir Service Fabric hizmeti olduğunda geçerlidir. Service Fabric arka ucuna yapılan çağrının yeni çözünürlükle yinelenmesi gerekip gerekmediğini belirleyen koşul. No Yok
sf-service-instance-name 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-name Yalnızca arka uç bir Service Fabric hizmeti olduğunda ve 'backend-id' kullanılarak belirtildiğinde geçerlidir. Service Fabric Reliable Services, bir hizmette birden çok dinleyici oluşturmanıza olanak tanır. Bu öznitelik, bir arka uç Reliable Service'in birden fazla dinleyicisi olduğunda belirli bir dinleyiciyi seçmek için kullanılır. Bu öznitelik belirtilmezse, API Management adsız bir dinleyici kullanmayı dener. Adı olmayan bir dinleyici, yalnızca bir dinleyicisi olan Reliable Services için tipik bir durumdur. 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 gelen ve giden istekler için ileti gövdesini ayarlamak için ilkeyi kullanın. İleti gövdesine erişmek için, ilkenin context.Request.Body gelen veya context.Response.Bodygiden bölümünde olmasına bağlı olarak veya özelliğini kullanabilirsiniz.

Önemli

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

İlkeyi kullanırken set-body aşağıdaki noktaları göz önünde bulundurun.

  • İlkeyi set-body yeni veya güncelleştirilmiş bir gövdeyi döndürmek için kullanıyorsanız, yeni gövde içeriğini açıkça sağladığınız için olarak ayarlamanız preserveContenttrue gerekmez.
    • Yanıt içeriğinin gelen işlem hattında korunması mantıklı değildir çünkü henüz bir yanıt yoktur.
    • Giden işlem hattında bir isteğin içeriğinin korunması mantıklı değildir çünkü istek bu noktada arka uçtan zaten gönderilmiştir.
    • Bu ilke ileti gövdesi olmadığında kullanılırsa (örneğin, gelen GET'de) bir özel durum oluşturulur.

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

Not

İlkenin öğelerini ve alt öğelerini ilke bildiriminde sağlanan sırayla ayarlayın. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.

İlke bildirimi

<set-body template="liquid" xsi-nil="blank | null">
    new body value as text
</set-body>

Örnekler

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

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

Dize olarak gövdeye erişme örneği

İşlem hattında daha sonra erişebilmek için özgün istek gövdesini koruyoruz.

<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 ayırmadığımız için, işlem hattında daha sonra erişilmesi bir özel durumla sonuçlanır.

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

Ürüne göre filtre yanıtı

Bu örnekte, ürün kullanılırken arka uç hizmetinden alınan yanıttan veri öğelerini kaldırarak içerik filtrelemenin nasıl gerçekleştirildiği gösterilmektedir Starter . Örnek arka uç yanıtı , OpenWeather One Call API'sine benzer kök düzeyinde özellikler içerir.

<!-- 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 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 [] {"current", "minutely", "hourly", "daily", "alerts"}) {
          response.Property (key).Remove ();
        }
        return response.ToString();
      }
    </set-body>
  </when>
</choose>

Ayarlanmış gövde ile Liquid şablonlarını kullanma

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

Önemli

İlkede set-body kullanılan Liquid uygulaması 'C# modunda' yapılandırılır. Filtreleme gibi işlemler yapılırken bu özellikle önemlidir. Örneğin, tarih filtresi kullanmak için Pascal büyük/küçük harf ve C# tarih biçimlendirmesi kullanılması gerekir; örneğin:

{{body.foo.startDateTime| Tarih:"yyyyMDDTHH:mm:ssZ"}}

Önemli

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

Desteklenen Liquid filtreleri

İlkede set-body aşağıdaki Liquid filtreleri desteklenir. Filtre örnekleri için Liquid belgelerine bakın.

Not

İlke, Liquid filtre adları için Pascal büyük/küçük harf kullanılmasını gerektirir (örneğin, "at_least" yerine "En Azından").

  • Abs
  • Ekle
  • Atleast
  • En Çok
  • Yararlanmak
  • Kompakt
  • Para Birimi
  • Tarih
  • Varsayılan
  • Bölünen
  • Küçük Harf
  • Esc
  • Birinci
  • H
  • Katılın
  • Son
  • Lstrip
  • Harita
  • Eksi
  • Mod
  • NewlineToBr
  • Artı
  • Önüne
  • Kaldır
  • RemoveFirst
  • Değiştir
  • ReplaceFirst
  • Round
  • Rstrip
  • Boyut
  • Dilim
  • Sırala
  • Bölme
  • Şerit
  • StripHtml
  • StripNewlines
  • Saatler
  • Truncate
  • TruncateWords
  • Ünal
  • Büyük Harf
  • UrlDecode
  • UrlEncode

Liquid ş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>

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

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

Öğeler

Ad Açıklama Gerekli
küme gövdesi Kök öğesi. Gövde metnini veya gövde döndüren bir ifadeyi içerir. Yes

Özellikler

Ad Açıklama Gerekli Varsayılan
şablon İlkenin çalıştırılacağı şablon oluşturma modunu set-body değiştirmek için kullanılır. Şu anda desteklenen tek değer:

- sıvı - set-body ilke sıvı şablonlama motorunu kullanacaktır
No Yok
xsi-nil ile xsi:nil="true" işaretlenen öğelerin XML yüklerinde nasıl gösterileceğini denetlemek için kullanılır. Aşağıdaki değerlerden birine ayarlayın.

- blank - nil boş bir dize ile temsil edilir.
- null - nil null değerle temsil edilir.
No Boş

İstek ve yanıt hakkındaki bilgilere erişmek için Liquid şablonu 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 bilgisini ayarla

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

HTTP iletisine HTTP üst bilgilerinin listesini eklemek için ilkeyi kullanın. Bir gelen işlem hattına yerleştirildiğinde, bu ilke hedef hizmete iletilen istek için HTTP üst bilgilerini ayarlar. Giden işlem hattına yerleştirildiğinde, bu ilke ağ geçidinin istemcisine gönderilen yanıt için HTTP üst bilgilerini ayarlar.

Not

İlkenin öğelerini ve alt öğelerini ilke bildiriminde sağlanan sırayla ayarlayın. Bu ilkeyi yapılandırmanıza yardımcı olmak için portal kılavuzlu, form tabanlı bir düzenleyici sağlar. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.

İlke bildirimi

<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ı geçersiz kılma

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

Örnek - üst bilgiyi 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 bilgilerini sağlamak için API düzeyinde ilkenin nasıl uygulanacağı gösterilmektedir.

<!-- 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 CSV dizesiyle birleştirilir, örneğin: headerName: value1,value2,value3

Özel durumlar, değerleri şunlar olan 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-Afteriçerir.

Bu özel durumlar söz konusu olduğunda, birden çok üst bilgi değeri tek bir dizede birleştirilmeyecek ve ayrı üst bilgi olarak geçirilecektir, örneğin: User-Agent: value1User-Agent: value2User-Agent: value3

Öğeler

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

Özellikler

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

- override - varolan üst bilginin değerini değiştirir.
- skip - varolan üst bilgi değerini değiştirmez.
- append - değeri varolan üst bilgi değerine ekler.
- delete - üst bilgiyi istekten kaldırır.

Aynı ada sahip birden çok girdiyi listelemek için override ayarlandığında üst bilgi tüm girişlere göre ayarlanır (birden çok kez listelenir); sonuçta yalnızca 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 kapsamlarında kullanılabilir.

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

  • İlke kapsamları: tüm kapsamlar

Sorgu dizesi parametresini ayarla

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

Not

İlkenin öğelerini ve alt öğelerini ilke bildiriminde sağlanan sırayla ayarlayın. Bu ilkeyi yapılandırmanıza yardımcı olmak için portal kılavuzlu, form tabanlı bir düzenleyici sağlar. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.

İlke bildirimi

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

Bu örnekte, arka uç hizmetine bağlam bilgilerini sağlamak için API düzeyinde ilkenin nasıl uygulanacağı gösterilmektedir.

<!-- 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. İlke ifadeleri ve Bağlam değişkeni.

Öğeler

Ad Açıklama Gerekli
set-query-parameter Kök öğesi. 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
exists-action Sorgu parametresi önceden belirtildiğinde gerçekleştirilecek eylemi belirtir. Bu öznitelik aşağıdaki değerlerden birine sahip olmalıdır.

- override - mevcut parametrenin değerini değiştirir.
- skip - mevcut sorgu parametresi değerini değiştirmez.
- append - değeri mevcut sorgu parametresi değerine ekler.
- delete - sorgu parametresini istekten kaldırır.

Aynı ada sahip birden çok girdiyi listelemek için override ayarlandığında, sorgu parametresinin tüm girişlere göre ayarlanmasıyla sonuçlanır (birden çok kez listelenir); sonuçta yalnızca 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 kapsamlarında kullanılabilir.

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

  • İlke kapsamları: tüm kapsamlar

URL'yi yeniden yaz

İlke, rewrite-uri aşağıdaki örnekte gösterildiği gibi bir istek URL'sini genel formundan web hizmeti tarafından beklenen forma 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ı dostu URL'nin web hizmeti tarafından beklenen URL biçimine dönüştürülmesi gerektiğinde kullanılabilir. Bu ilke yalnızca temiz URL'ler, RESTful URL'ler, kullanıcı dostu URL'ler veya yalnızca sorgu dizesi içermeyen ve bunun yerine yalnızca kaynağın yolunu (şema ve yetkiliden sonra) içeren, seo kullanımı kolay URL'ler gibi alternatif bir URL biçimi gösteriliyorsa uygulanmalıdır. Bu genellikle estetik, kullanılabilirlik veya arama motoru optimizasyonu (SEO) amacıyla yapılır.

Not

Sorgu dizesi parametrelerini yalnızca ilkeyi kullanarak ekleyebilirsiniz. Yeniden yazma URL'sine ek şablon yolu parametreleri ekleyemezsiniz.

Not

İlkenin öğelerini ve alt öğelerini ilke bildiriminde sağlanan sırayla ayarlayın. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.

İlke bildirimi

<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
rewrite-uri Kök öğesi. Yes

Öznitelikler

Öznitelik Açıklama Gerekli Varsayılan
şablon Sorgu dizesi parametreleriyle gerçek web hizmeti URL'si. İfadeler kullanılırken, değerin tamamı bir ifade olmalıdır. Yes Yok
copy-unmatched-params Gelen istekteki sorgu parametrelerinin özgün URL şablonunda mevcut olup olmadığını, 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 kapsamlarında kullanılabilir.

  • İlke bölümleri: gelen

  • İlke kapsamları: tüm kapsamlar

XSLT kullanarak XML'yi dönüştür

İlke, Transform XML using an XSLT istek veya yanıt gövdesindeki XML'ye bir XSL dönüşümü uygular.

Not

İlkenin öğelerini ve alt öğelerini ilke deyiminde sağlanan sırayla ayarlayın. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.

İlke bildirimi

<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 öğesi. 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 izler 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

İlkelerle çalışma hakkında daha fazla bilgi için bkz: