Zásady transformace ve službě API Management
Toto téma obsahuje referenční informace o následujících API Management zásad. Informace o přidávání a konfiguraci zásad najdete v tématu Zásady v API Management.
Zásady transformace
Převod JSON na XML – Převede text požadavku nebo odpovědi z JSON na XML.
Převod XML na JSON – převede text požadavku nebo odpovědi z XML na JSON.
Vyhledání a nahrazení řetězce v textu – najde podřetězec požadavku nebo odpovědi a nahradí ho jiným podřetězec.
Mask urls in content (Maskovat adresy URL v obsahu) – přepíše (masky) odkazy v textu odpovědi tak, aby odkazují na ekvivalentní odkaz přes bránu.
Nastavení back-endové služby – Změní back-endovou službu pro příchozí požadavek.
Nastavte text – Nastaví text zprávy pro příchozí a odchozí požadavky.
Nastavení hlavičky HTTP – Přiřadí hodnotu existující odpovědi nebo hlavičce požadavku nebo přidá novou odpověď nebo hlavičku požadavku.
Nastavení parametru řetězce dotazu – Přidá, nahradí hodnotu parametru řetězce dotazu požadavku nebo ho odstraní.
Přepsat adresu URL – převede adresu URL požadavku z veřejného formuláře na formulář očekávaný webovou službou.
Transformovat XML pomocí XSLT – Použije transformaci XSL na XML v textu požadavku nebo odpovědi.
Převod JSON na XML
Zásada json-to-xml převede text požadavku nebo odpovědi z FORMÁTU 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é |
|---|---|---|
| z formátu json do xml | Kořenový element. | Ano |
Atributy
| Název | Popis | Povinné | Výchozí |
|---|---|---|---|
| apply | Atribut musí být nastavený na jednu z následujících hodnot. – always – vždy použít převod. - content-type-json – převod jenom v případě, že hlavička Content-Type odpovědi indikuje přítomnost JSON. |
Ano | – |
| consider-accept-header | Atribut musí být nastavený na jednu z následujících hodnot. - true – použije převod, pokud se v hlavičce Accept požadavku požaduje XML. - false – vždy použije převod. |
No | true |
| parsovat datum | Při nastavení na false hodnoty data se během transformace jednoduše zkopírují. |
No | true |
Využití
Tuto zásadu můžete použít v následujících oddílech zásad a oborech.
Oddíly zásad: příchozí, odchozí, on-error
Obory zásad: všechny obory
Převod XML na JSON
Zásada xml-to-json převede text požadavku nebo odpovědi z XML na JSON. Tuto zásadu je možné 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ý element. | Ano |
Atributy
| Název | Popis | Povinné | Výchozí |
|---|---|---|---|
| Druhu | Atribut musí být nastavený na jednu z následujících hodnot. Převedený JSON, který je přívětivý pro javascript, má pro vývojáře v JavaScriptu popisný formulář. - direct – převedený JSON odráží strukturu původního dokumentu XML. |
Ano | – |
| apply | Atribut musí být nastavený na jednu z následujících hodnot. - always - convert always. - content-type-xml – převod pouze v případě, že hlavička Content-Type odpovědi indikuje přítomnost XML. |
Ano | – |
| consider-accept-header | Atribut musí být nastavený na jednu z následujících hodnot. - true – použije převod, pokud se v hlavičce Accept požadavku požaduje JSON. - false – vždy použije převod. |
No | true |
Využití
Tuto zásadu můžete použít v následujících oddílech zásad a oborech.
Oddíly zásad: příchozí, odchozí, on-error
Obory zásad: všechny obory
Vyhledání a nahrazení řetězce v textu
Zásada find-and-replace najde podřetězec požadavku nebo odpovědi a nahradí ho jiným dílčím řetězcem.
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é |
|---|---|---|
| vyhledání a nahrazení | Kořenový element. | Ano |
Atributy
| Název | Popis | Povinné | Výchozí |
|---|---|---|---|
| z | Řetězec, který se má vyhledat. | Ano | – |
| na | Náhradní řetězec Zadejte řetězec pro nahrazení nulové délky pro odebrání hledaného řetězce. | Ano | – |
Využití
Tyto zásady se dají použít v následujících oddílech a oborechzásad.
Oddíly zásad: příchozí, odchozí, back-end, zapnutá chyba
Obory zásad: všechny rozsahy
Maskování adres URL v obsahu
redirect-content-urlsV těle odpovědi odkazují nové zápisy (masky) zásad tak, aby odkazovaly na ekvivalentní odkaz přes bránu. Použijte v části odchozí pro opětovné psaní odkazů na text odpovědi, aby odkazovaly na bránu. Použijte v části příchozí pro opakový efekt.
Poznámka
Tato zásada nemění žádné hodnoty hlaviček, jako jsou Location hlavičky. Chcete-li změnit hodnoty hlaviček, 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é |
|---|---|---|
| přesměrování – obsah-adresy URL | Kořenový element. | Ano |
Využití
Tyto zásady se dají použít v následujících oddílech a oborechzásad.
Oddíly zásad: příchozí, odchozí
Obory zásad: všechny rozsahy
Nastavit back-end službu
Pomocí této set-backend-service zásady můžete přesměrovat příchozí požadavek na jiný back-end než ten, který je zadaný v nastavení rozhraní API pro tuto operaci. Tato zásada změní základní adresu URL služby back-end příchozího požadavku na službu zadanou v zásadě.
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í APIpro 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 nastavovaná zásada služby back-end směruje požadavky na základě hodnoty verze předané v řetězci dotazu do jiné back-endové služby, než je ta zadaná v rozhraní API.
Zpočátku je základní adresa URL služby back-end odvozená od nastavení rozhraní API. Adresa URL požadavku se ale na 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 to, kde http://contoso.com/api/10.4/ je adresa URL back-end služby zadané v nastavení rozhraní API.
Pokud je použita <> příkaz zásady, základní adresa URL služby back-end se může změnit znovu buď na http://contoso.com/api/8.2 nebo http://contoso.com/api/9.1 , v závislosti na hodnotě parametru dotazu na žádost o verzi. Například pokud je hodnota "2013-15" konečná adresa URL požadavku http://contoso.com/api/8.2/partners/15?version=2013-05&subscription-key=abcdef , bude.
Pokud je požadována další transformace žádosti, lze použít další zásady transformace . Chcete-li například odebrat parametr dotazu verze nyní, že je požadavek směrován do specifického back-endu konkrétní verze, lze použít zásadu parametru řetězce dotazu set , pomocí níž lze odebrat atribut Now redundantní 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ásady směrují požadavek do back-endu Service Fabric pomocí řetězce dotazu userId jako klíče oddílu a pomocí primární repliky oddílu.
Elementy
| Název | Popis | Povinné |
|---|---|---|
| nastavení-back-endu – služba | Kořenový element. | Ano |
Atributy
| Název | Popis | Povinné | Výchozí |
|---|---|---|---|
| základní-adresa URL | Nová základní adresa URL služby back-end. | base-url backend-id Musí být přítomen jeden z nebo. |
– |
| back-end – ID | Identifikátor back-endu, na který se má směrovat (Entity back-endu jsou spravované prostřednictvím Azure Portal, rozhraní APIa PowerShellu.) | base-url backend-id Musí být přítomen jeden z nebo. |
– |
| SF-partition-klíč | platí pouze v případě, že back-end je služba Service Fabric a je určena pomocí ' back-id '. Používá se k překladu konkrétního oddílu ze služby překladu názvů. | No | – |
| SF – typ repliky | platí pouze v případě, že back-end je služba Service Fabric a je určena pomocí ' back-id '. Určuje, zda má požadavek přejít na primární nebo sekundární repliku oddílu. | No | – |
| SF – vyřešit podmínku | Platí pouze v případě, že back-end je služba Service Fabric. podmínka, která určuje, jestli se volání Service Fabric back-endu musí opakovat s novým rozlišením. | No | – |
| SF-Service-instance-Name | Platí pouze v případě, že back-end je služba Service Fabric. Umožňuje změnit instance služby za běhu. | No | – |
| SF-naslouchacího procesu – název | platí pouze v případě, že back-end je služba Service Fabric a je určena pomocí ' back-id '. Service Fabric Reliable Services umožňuje vytvořit v rámci služby více posluchačů. Tento atribut se používá pro výběr konkrétního naslouchacího procesu, když má služba Reliable back-end více než jeden naslouchací proces. Pokud tento atribut není zadaný, API Management pokusí použít naslouchací proces bez názvu. Naslouchací proces bez názvu je typický pro Reliable Services, které mají pouze jeden naslouchací proces. | No | – |
Využití
Tuto zásadu můžete použít v následujících oddílech zásad a oborech.
Oddíly zásad: příchozí, back-end
Obory zásad: všechny obory
Nastavení textu
Pomocí zásady set-body můžete nastavit text zprávy pro příchozí a odchozí požadavky. Pokud chcete získat přístup k textu zprávy, můžete použít vlastnost nebo v závislosti na tom, jestli je zásada v části context.Request.Body context.Response.Body příchozí nebo odchozí.
Důležité
Všimněte si, že při přístupu k textu zprávy pomocí nebo se ve výchozím nastavení původní tělo zprávy ztratí a je nutné ho nastavit vrácením textu zpět context.Request.Body context.Response.Body ve výrazu. Pokud chcete zachovat obsah textu, nastavte při přístupu ke zprávě preserveContent true parametr na . Pokud je hodnota nastavená na a výraz vrátí jiné tělo, použije preserveContent true se vrácené tělo.
Při používání zásad mějte na vědomí následující set-body aspekty.
- Pokud zásadu používáte k vrácení nového nebo aktualizovaného textu, nemusíte nastavovat na , protože explicitně zadáváme
set-bodypreserveContentnový obsahtruetextu.- Zachování obsahu odpovědi v příchozím kanálu nedává smysl, protože zatím neexistuje žádná odpověď.
- Zachování obsahu požadavku v odchozím kanálu nedává smysl, protože požadavek už byl odeslán do back-endu v tomto okamžiku.
- Pokud se tato zásada používá v případě, že neexistuje žádný text zprávy, například v příchozím get, je vyvolána výjimka.
Další informace najdete v částech context.Request.Body , a v tabulce context.Response.Body IMessage kontextových proměnných.
Prohlášení o zásadách
<set-body>new body value as text</set-body>
Příklady
Příklad literálového textu
<set-body>Hello world!</set-body>
Příklad přístupu k textu jako řetězci Všimněte si, že zachováme původní text požadavku, abychom k ní mohli později v kanálu přistupovat.
<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 Všimněte si, že vzhledem k tomu, že původní text požadavku nezahájíme, bude mít přístup k tomuto textu později v kanálu za následek výjimku.
<set-body>
@{
JObject inBody = context.Request.Body.As<JObject>();
if (inBody.attribute == <tag>) {
inBody[0] = 'm';
}
return inBody.ToString();
}
</set-body>
Filtrování odpovědí 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 Starter použití produktu. Ukázku konfigurace a používání této zásady najdete v článku Cloud Cover Scene 177: More API Management Features with Vlad Vinogradsky and fast-forward to 34:30 (Přeposílání do 34:30). Začněte v 31:50, abyste si pro tuto ukázku prohlédněte přehled rozhraní API dark sky forecast.
<!-- 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>
Použití šablon Liquid s nastaveným tělem
Zásady je možné nakonfigurovat tak, aby k transformaci textu požadavku nebo odpovědi bylo možné použít jazyk šablon set-body Liquid. To může být velmi efektivní, pokud potřebujete zcela změnit formát zprávy.
Důležité
Implementace Liquid použité v set-body zásadách se konfiguruje v režimu C#. To je důležité hlavně při práci s filtrováním. Například použití filtru dat vyžaduje použití jazyka Pascal Casing a formátování data v jazyce C#, například:
{{body.foo.startDateTime| Date:"yyyyMMddTHH:mm:ssZ"}}
Důležité
Pokud chcete pomocí šablony Liquid správně vytvořit vazbu k textu XML, pomocí zásady nastavte Content-Type na application/xml, text/xml (nebo libovolný typ končící na +xml). Pro tělo JSON musí být set-header to application/json, text/json (nebo jakýkoli typ končící na +json).
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ý element. Obsahuje text textu nebo výrazy, které vrací tělo. | Ano |
Vlastnosti
| Název | Popis | Povinné | Výchozí |
|---|---|---|---|
| šablona | Používá se ke změně režimu šablon, ve které se spustí zásady nastaveného textu. V současné době je jedinou podporovanou hodnotou: - liquid – zásada set body použije modul šablon Liquid. |
No |
Pro přístup k informacím o požadavku a odpovědi může šablona Liquid vytvořit vazbu na kontextový objekt 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 můžete použít v následujících oddílech zásad a oborech.
Oddíly zásad: příchozí, odchozí, back-end
Obory zásad: všechny obory
Nastavení hlavičky PROTOKOLU HTTP
Zásada přiřadí hodnotu existující hlavičce odpovědi nebo požadavku nebo přidá novou odpověď set-header nebo hlavičku požadavku.
Vloží seznam hlaviček PROTOKOLU HTTP do zprávy HTTP. Při umístění do příchozího kanálu tato zásada nastaví hlavičky PROTOKOLU HTTP pro požadavek předaný cílové službě. Při umístění do odchozího kanálu tato zásada nastaví hlavičky PROTOKOLU HTTP pro odpověď odesílané klientovi brány.
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í hlavičky, přepsání existujícího
<set-header name="some header name" exists-action="override">
<value>20</value>
</set-header>
Příklad – odebrání hlavičky
<set-header name="some header name" exists-action="delete" />
Předání informací o kontextu back-endové službě
Tento příklad ukazuje, jak použít zásady na úrovni rozhraní API k poskytování kontextových informací back-endové službě. Ukázku konfigurace a používání této zásady najdete v článku Cloud Cover Scene 177: More API Management Features with Vlad Vinogradsky and fast-forward to 10:30 (Více funkcí API Management s Vladem Vinogradskym a fast-forward to 10:30). Ve 12:10 je ukázka volání operace na portálu pro vývojáře, kde můžete vidět zásady v práci.
<!-- 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 hlavičky se zřetězuje s řetězcem CSV, například: headerName: value1,value2,value3
Mezi výjimky patří standardizované hlavičky, které hodnoty:
- může obsahovat čárky (
User-Agent,WWW-Authenticate,Proxy-Authenticate), - může obsahovat datum (
CookieSet-Cookie, ,Warning), - obsahují datum (
Date, , , , , ,ExpiresIf-Modified-SinceIf-Unmodified-SinceLast-ModifiedRetry-After).
V případě těchto výjimek nebude více hodnot hlaviček zřetězováno do jednoho řetězce a bude předáno jako samostatné hlavičky, například: User-Agent: value1
User-Agent: value2
User-Agent: value3
Elementy
| Název | Popis | Povinné |
|---|---|---|
| set-header | Kořenový element. | Ano |
| hodnota | Určuje hodnotu hlavičky, která se má nastavit. Pro více hlaviček se stejným názvem přidejte další value prvky. |
No |
Vlastnosti
| Název | Popis | Povinné | Výchozí |
|---|---|---|---|
| exists-action | Určuje akci, která se má provést, když je hlavička už zadaná. Tento atribut musí mít jednu z následujících hodnot. - override – nahradí hodnotu existující hlavičky. - skip – nenahrazuje stávající hodnotu hlavičky. – append – připojí hodnotu k existující hodnotě hlavičky. - delete – odebere hlavičku z požadavku. Pokud nastavíte možnost zařazení více položek se stejným názvem, bude hlavička nastavena podle všech položek (které budou uvedeny vícekrát); ve výsledku se nastaví pouze override uvedené hodnoty. |
No | override |
| name | Určuje název hlavičky, která se má nastavit. | Ano | – |
Využití
Tuto zásadu můžete použít v následujících oddílech zásad a oborech.
Oddíly zásad: příchozí, odchozí, back-end, chyba
Obory zásad: všechny obory
Nastavení parametru řetězce dotazu
Zásada přidá, nahradí hodnotu parametru řetězce dotazu požadavku nebo set-query-parameter ho odstraní. Lze použít k předání parametrů dotazu očekávaných back-endovou službou, které jsou volitelné nebo se v požadavku nikdy nenacházejí.
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ání informací o kontextu back-endové službě
Tento příklad ukazuje, jak použít zásady na úrovni rozhraní API k poskytování kontextových informací back-endové službě. Ukázku konfigurace a používání této zásady najdete v článku Cloud Cover Scene 177: More API Management Features with Vlad Vinogradsky and fast-forward to 10:30 (Přeposílání do 10:30). Ve 12:10 je ukázka volání operace na portálu pro vývojáře, kde můžete vidět zásady v práci.
<!-- 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ý element. | Ano |
| 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. |
Ano |
Vlastnosti
| Název | Popis | Povinné | Výchozí |
|---|---|---|---|
| exists-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. - override – nahradí hodnotu existujícího parametru. - skip – nenahrazuje stávající hodnotu parametru dotazu. - append – připojí hodnotu k existující hodnotě parametru dotazu. - delete – odebere parametr dotazu z požadavku. Pokud nastavíte možnost zařazení více položek se stejným názvem, parametr dotazu se nastaví podle všech položek (které budou uvedeny vícekrát), ve výsledku se nastaví override pouze uvedené hodnoty. |
No | override |
| name | Určuje název parametru dotazu, který se má nastavit. | Ano | – |
Využití
Tuto zásadu můžete použít v následujících oddílech zásad a oborech.
Oddíly zásad: příchozí, back-end
Obory zásad: všechny obory
Přepsání adresy URL
Zásady převádí adresu URL požadavku z veřejného formuláře na formulář očekávaný webovou službou, jak je rewrite-uri znázorněno v následujícím příkladu.
Veřejná adresa URL –
http://api.example.com/storenumber/ordernumberAdresa URL požadavku –
http://api.example.com/v2/US/hardware/storenumber&ordernumber?City&StateTuto zásadu můžete použít, když by se adresa URL vhodná pro člověka nebo prohlížeč měla transformovat do formátu adresy URL očekávaného webovou službou. Tuto zásadu je potřeba použít pouze při vystavení alternativního formátu adresy URL, jako jsou čisté adresy URL, adresy URL restful, uživatelsky přívětivé adresy URL nebo adresy URL vhodné 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í z důvodů, které se používají pro zajištění vzhledu, použitelnosti nebo optimalizace vyhledávacího webu (SEO).
Poznámka
Pomocí zásady můžete přidat pouze parametry řetězce dotazu. Do adresy URL 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ý element. | Ano |
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ýraz. | Ano | – |
| copy-unmatched-params | Určuje, jestli se parametry dotazu v příchozím požadavku, které nejsou v původní šabloně adresy URL, přidávají na adresu URL definovanou šablonou pro opětovné zápisy. | No | true |
Využití
Tuto zásadu můžete použít v následujících oddílech zásad a oborech.
Oddíly zásad: příchozí
Obory zásad: všechny obory
Transformace XML pomocí XSLT
Zásady Transform XML using an XSLT aplikují 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ý element. | Ano |
| parameter | Slouží k definování proměnných používaných v transformaci. | No |
| xsl:stylesheet | Kořenový element šablony stylů. Všechny elementy a atributy definované v rámci dodržují standardní specifikaci XSLT. | Ano |
Využití
Tuto zásadu můžete použít v následujících oddílech zásad a oborech.
Oddíly zásad: příchozí, odchozí
Obory zásad: všechny obory
Další kroky
Další informace najdete v následujících tématech:
- Zásady v API Management
- Referenční informace o zásadách pro úplný seznam prohlášení o zásadách a jejich nastavení
- Ukázky zásad