Zásady transformace ve službě API Management

Tento článek obsahuje referenční informace o zásadách API Management používaných k transformaci požadavků nebo odpovědí rozhraní API.

Další informace o zásadách:

Zásady transformace

Convert JSON to XML (Převést JSON na XML)

Zásada json-to-xml převede text požadavku nebo odpovědi z JSON na XML.

Prohlášení o zásadách

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

Příklad

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

Elementy

Název Popis Povinné
json-to-xml Kořenový prvek. Yes

Atributy

Název Popis Povinné Výchozí
apply Atribut musí být nastaven na jednu z následujících hodnot.

- vždy - vždy použijte převod.
– content-type-json – převod pouze v případě, že hlavička Content-Type odpovědi označuje přítomnost JSON.
Yes
zvažte-accept-header Atribut musí být nastaven na jednu z následujících hodnot.

- true – použijte převod, pokud je XML požadováno v hlavičce Accept požadavku.
- false - vždy použít převod.
No true
parsování data Při nastavení false hodnot kalendářních dat se během transformace jednoduše zkopírují No true

Využití

Tuto zásadu je možné použít v následujících částech a oborech zásad.

  • Oddíly zásad: příchozí, odchozí, on-error

  • Obory zásad: všechny obory

Convert XML to JSON (Převést XML na JSON)

Zásada xml-to-json převede text požadavku nebo odpovědi z XML na JSON. Tuto zásadu lze použít k modernizaci rozhraní API na základě back-endových webových služeb pouze XML.

Prohlášení o zásadách

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

Příklad

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

Elementy

Název Popis Povinné
xml-to-json Kořenový prvek. Yes

Atributy

Název Popis Povinné Výchozí
Druhu Atribut musí být nastaven na jednu z následujících hodnot.

- javascript-friendly - převedený JSON má formulář přátelský pro vývojáře JavaScriptu.
- přímý – převedený JSON odpovídá struktuře původního dokumentu XML.
Yes
apply Atribut musí být nastaven na jednu z následujících hodnot.

- vždy - převést vždy.
- content-type-xml - convert only if response Content-Type header indikuje přítomnost XML.
Yes
zvažte-accept-header Atribut musí být nastaven na jednu z následujících hodnot.

- true – použijte převod, pokud je json požadován v hlavičce Accept požadavku.
- false - vždy použít převod.
No true

Využití

Tuto zásadu je možné použít v následujících částech a oborech zásad.

  • Oddíly zásad: příchozí, odchozí, on-error

  • Obory zásad: všechny obory

Find and replace string in body (Vyhledat a nahradit řetězec v textu)

Zásada find-and-replace najde podřetěžku požadavku nebo odpovědi a nahradí ji jiným podřetěžkem.

Prohlášení o zásadách

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

Příklad

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

Elementy

Název Popis Povinné
find-and-replace Kořenový prvek. Yes

Atributy

Název Popis Povinné Výchozí
Z Řetězec, který se má vyhledat. Yes
na Náhradní řetězec Zadejte řetězec nahrazení nulové délky pro odebrání vyhledávacího řetězce. Yes

Využití

Tuto zásadu je možné použít v následujících částech a oborech zásad.

  • Oddíly zásad: příchozí, odchozí, back-end, on-error

  • Obory zásad: všechny obory

Mask URLs in content (Maskovat adresy URL v obsahu)

Zásady redirect-content-urls přepisují odkazy (masky) v textu odpovědi, aby odkazoval na ekvivalentní odkaz přes bránu. V oddílu odchozích přenosů můžete přepsat odkazy textu odpovědi, aby odkazovaly na bránu. Použijte v příchozí části pro opačný efekt.

Poznámka

Tato zásada nemění žádné hodnoty záhlaví, jako Location jsou záhlaví. Pokud chcete změnit hodnoty záhlaví, použijte zásadu set-header .

Prohlášení o zásadách

<redirect-content-urls />

Příklad

<redirect-content-urls />

Elementy

Název Popis Povinné
redirect-content-urls Kořenový prvek. Yes

Využití

Tuto zásadu je možné použít v následujících částech a oborech zásad.

  • Oddíly zásad: příchozí, odchozí

  • Obory zásad: všechny obory

Set backend service (Nastavit back-endovou službu)

set-backend-service Pomocí zásad můžete přesměrovat příchozí požadavek na jiný back-end, než na který je zadaný v nastavení rozhraní API pro danou operaci. Tato zásada změní základní adresu URL back-endové služby příchozího požadavku na adresu URL zadané v zásadách.

Prohlášení o zásadách

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

nebo

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

Poznámka

Back-endové entity je možné spravovat prostřednictvím Azure Portal, rozhraní API pro správu a PowerShellu.

Příklad

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

V tomto příkladu sada zásad back-endové služby směruje požadavky na základě hodnoty verze předávané v řetězci dotazu do jiné back-endové služby, než která je určená v rozhraní API.

Počáteční adresa URL základní služby back-endu je odvozena z nastavení rozhraní API. Adresa URL https://contoso.azure-api.net/api/partners/15?version=2013-05&subscription-key=abcdef požadavku se tedy stane http://contoso.com/api/10.4/partners/15?version=2013-05&subscription-key=abcdef místem, kde http://contoso.com/api/10.4/ je adresa URL back-endové služby zadaná v nastavení rozhraní API.

Při použití příkazu zvolit> zásadu< se základní adresa URL back-endové služby může znovu změnit na http://contoso.com/api/8.2 nebo http://contoso.com/api/9.1, v závislosti na hodnotě parametru dotazu požadavku verze. Pokud je "2013-15" například hodnota konečná adresa URL požadavku, stane http://contoso.com/api/8.2/partners/15?version=2013-05&subscription-key=abcdefse .

Pokud je požadovaná další transformace požadavku, je možné použít další zásady transformace . Pokud chcete například odebrat parametr dotazu verze teď, když se požadavek směruje do konkrétní verze back-endu, můžete použít zásadu parametru Set query string k odebrání nyní redundantního atributu verze.

Příklad

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

V tomto příkladu zásada směruje požadavek na back-end service fabric pomocí řetězce dotazu userId jako klíče oddílu a pomocí primární repliky oddílu.

Elementy

Název Popis Povinné
set-back-end-service Kořenový prvek. Yes

Atributy

Název Popis Povinné Výchozí
base-url Nová adresa URL základní služby back-endu Jedna z base-url nich nebo backend-id musí být přítomna.
back-end-ID Identifikátor back-endu, na který se má směrovat. (Back-endové entity se spravují prostřednictvím Azure Portal, rozhraní API a PowerShellu.) Jedna z base-url nich nebo backend-id musí být přítomna.
sf-partition-key Platí pouze v případě, že back-end je služba Service Fabric a je zadána pomocí "back-end-ID". Používá se k překladu konkrétního oddílu ze služby překladu názvů. No
sf-replica-type Platí pouze v případě, že back-end je služba Service Fabric a je zadána pomocí "back-end-ID". Určuje, jestli má požadavek přejít na primární nebo sekundární repliku oddílu. No
sf-resolve-condition Platí jenom v případě, že back-end je služba Service Fabric. Podmínka, která identifikuje, jestli musí být volání Service Fabric back-endu opakované s novým řešením. No
sf-service-instance-name Platí jenom v případě, že back-end je služba Service Fabric. Umožňuje změnu instancí služby za běhu. No
sf-listener-name Platí pouze v případě, že back-end je služba Service Fabric a je určena pomocí "back-end-id". Service Fabric Reliable Services umožňuje vytvářet více naslouchacích procesů ve službě. Tento atribut slouží k výběru konkrétního naslouchacího procesu, pokud má back-end reliable Service více než jeden naslouchací proces. Pokud tento atribut není zadaný, API Management se pokusí použít naslouchací proces bez názvu. Naslouchací proces bez názvu je typický pro Reliable Services, který má pouze jeden naslouchací proces. No

Využití

Tuto zásadu je možné použít v následujících částech zásad a oborech.

  • Oddíly zásad: příchozí, back-end

  • Obory zásad: všechny obory

Set body (Nastavit text)

set-body Pomocí zásad nastavte text zprávy pro příchozí a odchozí požadavky. Pro přístup k textu zprávy můžete použít context.Request.Body vlastnost nebo context.Response.Body, v závislosti na tom, jestli je zásada v příchozím nebo odchozím oddílu.

Důležité

Všimněte si, že při přístupu k textu zprávy pomocí context.Request.Body nebo context.Response.Body, původní text zprávy je ztracen a musí být nastaven vrácením textu zpět ve výrazu. Pokud chcete zachovat základní obsah, nastavte preserveContent parametr na true hodnotu při přístupu ke zprávě. Pokud preserveContent je nastavená true hodnota a výraz vrátí jiný text, použije se vrácený text.

Při používání set-body zásad mějte na paměti následující aspekty.

  • Pokud zásadu set-body používáte k vrácení nového nebo aktualizovaného textu, nemusíte je nastavit preserveContent , true protože explicitně zadáváte nový obsah textu.
    • Zachování obsahu odpovědi v příchozím kanálu nemá smysl, protože ještě neexistuje žádná odpověď.
    • Zachování obsahu požadavku v odchozím kanálu nemá smysl, protože požadavek už byl odeslán do back-endu v tomto okamžiku.
    • Pokud se tato zásada používá, pokud neexistuje text zprávy, například v příchozím příkazu GET, vyvolá se výjimka.

Další informace naleznete v části context.Request.Body, context.Response.Bodya IMessage oddíly v tabulce kontextové proměnné .

Prohlášení o zásadách

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

Příklady

Příklad literálu

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

Příklad přístupu k textu jako řetězce

Zachováváme původní text požadavku, abychom k němu měli přístup později v kanálu.

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

Příklad přístupu k textu jako objektu JObject

Vzhledem k tomu, že si původní text požadavku nezarezervujeme, výsledkem pozdějšího přístupu v kanálu bude výjimka.

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

Filtrovat odpověď na základě produktu

Tento příklad ukazuje, jak provádět filtrování obsahu odebráním datových prvků z odpovědi přijaté z back-endové služby při použití Starter produktu. Ukázková odpověď back-endu obsahuje vlastnosti kořenové úrovně podobné rozhraní OpenWeather One Call API.

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

Použití šablon Liquid s textem sady

Zásady set-body lze nakonfigurovat tak, aby používaly jazyk šablon liquid k transformaci textu požadavku nebo odpovědi. To může být efektivní, pokud potřebujete úplně změnit formát zprávy.

Důležité

Implementace liquidu použitého v zásadách set-body je nakonfigurovaná v režimu C#. To je obzvláště důležité při provádění věcí, jako je filtrování. Například použití filtru kalendářních dat vyžaduje použití formátování casingu Pascal a jazyka C#, například:

{{body.foo.startDateTime| Datum:"yyyMMddTHH:mm:ssZ"}}

Důležité

Pokud chcete správně vytvořit vazbu k textu XML pomocí šablony Liquid, použijte zásadu set-header k nastavení content-Type na application/xml, text/xml (nebo jakýkoli typ končící na +xml), pro text JSON, musí to být application/json, text/json (nebo jakýkoli typ končící +json).

Podporované filtry Liquid

V zásadách set-body jsou podporovány následující filtry Liquid. Příklady filtrů najdete v dokumentaci k liquidu.

Poznámka

Zásada vyžaduje pro názvy filtrů Liquid písmena Pascal (například "AtLeast" místo "at_least").

  • Abs
  • Připojit
  • Aspoň
  • Nejvíce atMost
  • Vydělat
  • Kompaktní
  • Měna
  • Datum
  • Výchozí
  • Děleno
  • Malá písmena
  • Escape
  • První
  • H
  • Připojení
  • Poslední
  • Lstrip
  • Mapa
  • Minus
  • Modulo
  • NewlineToBr
  • Plus
  • Předsazení
  • Odebrat
  • RemoveFirst
  • Nahrazení
  • ReplaceFirst
  • Round
  • Rstrip
  • Velikost
  • Plátek
  • Seřadit
  • Rozdělení
  • Pás
  • StripHtml
  • StripNewlines
  • Časové údaje
  • Truncate
  • TruncateWords
  • Uniq
  • Upcase
  • UrlDecode
  • Urlencode

Převod JSON na SOAP pomocí šablony Liquid

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

Transformace JSON pomocí šablony Liquid

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

Elementy

Název Popis Povinné
set-body Kořenový prvek. Obsahuje základní text nebo výraz, který vrací text. Yes

Vlastnosti

Název Popis Povinné Výchozí
šablona Slouží ke změně režimu šablony, ve které se budou spouštět zásady textu sady. V současné době je jediná podporovaná hodnota:

- kapalina - zásady nastavení těla budou používat kapalinový templatovací motor
No

Pro přístup k informacím o požadavku a odpovědi může šablona Liquid vytvořit vazbu k objektu kontextu s následujícími vlastnostmi:

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

Využití

Tuto zásadu je možné použít v následujících částech a oborech zásad.

  • Oddíly zásad: příchozí, odchozí, back-end

  • Obory zásad: všechny obory

Set HTTP header (Nastavit hlavičku HTTP)

Zásada set-header přiřadí hodnotu existující odpovědi nebo hlavičce požadavku nebo přidá novou odpověď nebo hlavičku požadavku.

Pomocí zásad vložte do zprávy HTTP seznam hlaviček HTTP. Při umístění do příchozího kanálu tato zásada nastaví hlavičky HTTP pro požadavek předávaný cílové službě. Při umístění do odchozího kanálu tato zásada nastaví hlavičky HTTP pro odpověď odesílanou klientovi brány.

Tip

Abyste mohli tuto zásadu nakonfigurovat, portál poskytuje editor založený na formulářích s asistencí. Přečtěte si další informace o tom, jak nastavit nebo upravit zásady API Management.

Prohlášení o zásadách

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

Příklady

Příklad – přidání záhlaví, přepsání existujících

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

Příklad – odebrání záhlaví

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

Předávání informací o kontextu do back-endové služby

Tento příklad ukazuje, jak použít zásady na úrovni rozhraní API pro poskytnutí kontextových informací back-endové službě.

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

Další informace najdete v tématu Výrazy zásad a kontextová proměnná.

Poznámka

Několik hodnot záhlaví se zřetězení do řetězce CSV, například: headerName: value1,value2,value3

Mezi výjimky patří standardizované hlavičky, jejichž hodnoty:

  • může obsahovat čárky (User-Agent, WWW-Authenticate, Proxy-Authenticate),
  • může obsahovat datum (Cookie, Set-Cookie, Warning),
  • obsahují datum (Date, Expires, , If-Unmodified-SinceIf-Modified-Since, Last-ModifiedRetry-After, ).

V případě těchto výjimek nebude více hodnot hlaviček zřetězeno do jednoho řetězce a bude předáno jako samostatné hlavičky, například: User-Agent: value1User-Agent: value2User-Agent: value3

Elementy

Název Popis Povinné
set-header Kořenový prvek. Yes
hodnota Určuje hodnotu hlavičky, která se má nastavit. Pro více záhlaví se stejným názvem přidejte další value prvky. No

Vlastnosti

Název Popis Povinné Výchozí
existuje-akce Určuje, jaká akce se má provést, když je hlavička již zadaná. Tento atribut musí mít jednu z následujících hodnot.

- přepsání – nahradí hodnotu existující hlavičky.
- přeskočit – nenahrazuje stávající hodnotu záhlaví.
- připojení – připojí hodnotu k existující hodnotě záhlaví.
- odstranit – odebere hlavičku z požadavku.

Když nastavíte override zařazení více položek se stejným názvem, výsledkem je nastavení záhlaví podle všech položek (které bude uvedeno vícekrát); ve výsledku se nastaví pouze hodnoty uvedené.
No override
name Určuje název hlavičky, která se má nastavit. Yes

Využití

Tuto zásadu je možné použít v následujících částech a oborech zásad.

  • Oddíly zásad: příchozí, odchozí, back-end, on-error

  • Obory zásad: všechny obory

Set query string parameter (Nastavit parametr řetězce dotazu)

Zásada set-query-parameter přidá, nahradí hodnotu nebo odstraní parametr řetězce dotazu požadavku. Lze použít k předávání parametrů dotazu očekávaných back-endovou službou, které jsou volitelné nebo nikdy nejsou v požadavku přítomné.

Tip

Abyste mohli tuto zásadu nakonfigurovat, portál poskytuje editor založený na formulářích s asistencí. Přečtěte si další informace o tom, jak nastavit nebo upravit zásady API Management.

Prohlášení o zásadách

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

Příklad


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

Předávání informací o kontextu do back-endové služby

Tento příklad ukazuje, jak použít zásady na úrovni rozhraní API pro poskytnutí kontextových informací back-endové službě.

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

Další informace najdete v tématu Výrazy zásad a kontextová proměnná.

Elementy

Název Popis Povinné
set-query-parameter Kořenový prvek. Yes
hodnota Určuje hodnotu parametru dotazu, která se má nastavit. Pro více parametrů dotazu se stejným názvem přidejte další value prvky. Yes

Vlastnosti

Název Popis Povinné Výchozí
exist-action Určuje akci, která se má provést, pokud je parametr dotazu už zadaný. Tento atribut musí mít jednu z následujících hodnot.

- přepsání – nahradí hodnotu existujícího parametru.
- skip - nenahrazuje existující hodnotu parametru dotazu.
- připojení – připojí hodnotu k existující hodnotě parametru dotazu.
- delete – odebere parametr dotazu z požadavku.

Pokud je override nastaveno zařazení více položek se stejným názvem, výsledkem je nastavení parametru dotazu podle všech položek (které budou uvedeny vícekrát); ve výsledku se nastaví pouze uvedené hodnoty.
No override
name Určuje název parametru dotazu, který se má nastavit. Yes

Využití

Tuto zásadu je možné použít v následujících částech zásad a oborech.

  • Oddíly zásad: příchozí, back-end

  • Obory zásad: všechny obory

Rewrite URL (Přepsat adresu URL)

Zásada rewrite-uri převede adresu URL požadavku z veřejného formuláře na formulář očekávaný webovou službou, jak je znázorněno v následujícím příkladu.

  • Veřejná adresa URL – http://api.example.com/storenumber/ordernumber

  • Adresa URL požadavku – http://api.example.com/v2/US/hardware/storenumber&ordernumber?City&State

    Tuto zásadu lze použít, pokud by webová služba měla převést adresu URL popisnou pro člověka nebo prohlížeč do formátu adresy URL očekávaného webovou službou. Tyto zásady je potřeba použít jenom při zveřejnění alternativního formátu adresy URL, jako jsou čisté adresy URL, adresy URL RESTful, uživatelsky přívětivé adresy URL nebo adresy URL popisné pro seO, které jsou čistě strukturální adresy URL, které neobsahují řetězec dotazu, a místo toho obsahují pouze cestu k prostředku (po schématu a autoritě). To se často provádí pro účely estetické, použitelnosti nebo optimalizace vyhledávacího webu (SEO).

Poznámka

Pomocí zásad můžete přidat pouze parametry řetězce dotazu. Do adresy URL pro přepsání nelze přidat další parametry cesty šablony.

Prohlášení o zásadách

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

Příklad

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

Elementy

Název Popis Povinné
rewrite-uri Kořenový prvek. Yes

Atributy

Atribut Popis Povinné Výchozí
šablona Skutečná adresa URL webové služby s libovolnými parametry řetězce dotazu. Při použití výrazů musí být celá hodnota výrazem. Yes
copy-unmatched-params Určuje, jestli se parametry dotazu v příchozím požadavku, které nejsou přítomné v původní šabloně adresy URL, přidají do adresy URL definované šablonou opětovného zápisu. No true

Využití

Tuto zásadu je možné použít v následujících částech zásad a oborech.

  • Oddíly zásad: příchozí

  • Obory zásad: všechny obory

Transform XML using an XSLT (Transformovat XML pomocí XSLT)

Zásada Transform XML using an XSLT použije transformaci XSL na XML v textu požadavku nebo odpovědi.

Prohlášení o zásadách

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

Příklad

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

Elementy

Název Popis Povinné
xsl-transform Kořenový prvek. Yes
parameter Slouží k definování proměnných použitých v transformaci. No
xsl:stylesheet Kořenový element stylesheet. Všechny prvky a atributy definované v rámci standardní specifikace XSLT Yes

Využití

Tuto zásadu je možné použít v následujících částech zásad a oborech.

  • Oddíly zásad: příchozí, odchozí

  • Obory zásad: všechny obory

Další kroky

Další informace o práci se zásadami najdete v tématech: