Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
PLATÍ PRO: Všechny úrovně služby API Management
set-body Pomocí zásad nastavte text zprávy pro požadavek nebo odpověď. Pokud chcete získat přístup k textu zprávy, můžete použít context.Request.Body vlastnost nebo context.Response.Bodyv závislosti na tom, jestli je zásada v oddílu příchozí nebo odchozí.
Důležité
Ve výchozím nastavení 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. Chcete-li zachovat základní obsah, nastavte preserveContent parametr na při přístupu ke true zprávě. Pokud preserveContent je nastavená true hodnota a výraz vrátí jiný text, použije se vrácený text.
Poznámka:
Nastavte prvky zásad a podřízené prvky v pořadí uvedeném v prohlášení o zásadách. Přečtěte si další informace o tom, jak nastavit nebo upravit zásady služby API Management.
Prohlášení o zásadách
<set-body template="liquid" xsi-nil="blank | null" parse-date="true | false">
new body value as text
</set-body>
Atributy
| Atribut | Popis | Požaduje se | Výchozí |
|---|---|---|---|
| šablona | Používá se ke změně režimu šablony, ve kterém zásady set-body běží. V současné době je jediná podporovaná hodnota:- liquid
set-body- zásada bude používat modul šablon kapalin |
Ne | – |
| xsi-nil | Slouží k řízení způsobu znázornění prvků označených xsi:nil="true" v datových částech XML. Nastavte jednu z následujících hodnot:- blank
-
nil je reprezentován prázdným řetězcem.- null
-
nil je reprezentován hodnotou null.Výrazy zásad nejsou povolené. |
Ne | blank |
| parse-date | Logický. Určuje, "/Date(1198908717056)/"jestli se řetězce formátované datem (například , "2012-03-21T05:40Z") analyzují do system.DateTime (mm/dd/yyyy hh:mm:ss). Pokud je nastavená hodnota false, hodnoty kalendářních dat se jednoduše zkopírují.Výrazy zásad nejsou povolené. |
Ne | true |
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í
- Oddíly zásad: příchozí, odchozí, back-end
- Obory zásad: globální, pracovní prostor, produkt, rozhraní API, operace
- Brány: Classic, v2, consumption, self-host, workspace
Poznámky k využití
- Pokud zásadu
set-bodypoužíváte k vrácení nového nebo aktualizovaného textu, nemusíte je nastavitpreserveContenttrue, protože explicitně zadáváte nový obsah textu. - Zachování obsahu odpovědi v příchozím kanálu nemá smysl, protože zatím 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.
- Pokud se tato zásada použije, pokud neexistuje text zprávy, například v příchozím
GETspojení, vyvolá se výjimka.
Další informace naleznete v context.Request.Bodyčásti a context.Response.BodyIMessageBody oddíly v tabulce kontextové proměnné.
Použití šablon Liquid s set-body
Zásady set-body je možné nakonfigurovat tak, aby k transformaci textu požadavku nebo odpovědi používaly jazyk šablon Liquid . To může být efektivní, pokud potřebujete zcela změnit tvar formátu zprávy.
Důležité
Implementace liquidu použitá v zásadách set-body je nakonfigurovaná v režimu C#. To je zvlášť 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átu casingu Pascal a jazyka C#, například:
{{body.foo.startDateTime| Datum:"yyyYMDDTHH:mm:ssZ"}}
Důležité
Aby bylo možné 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í být application/json, text/json (nebo jakýkoli typ končící na +json).
Důležité
Šablony Liquid jako vstup používají text požadavku a odpovědi v aktuálním kanálu spouštění. Z tohoto důvodu nefungují šablony liquid při použití v zásadách návratové odpovědi. Zásada návratové odpovědi zruší aktuální kanál spuštění a odebere text požadavku nebo odpovědi. V důsledku toho všechny šablony liquid použité uvnitř return-response obdrží jako vstup prázdný řetězec a nevygeneruje očekávaný výstup.
Podporované filtry Liquid
V zásadách se podporují set-body následující filtry Liquid. Příklady filtrů najdete v dokumentaci liquid.
Poznámka:
Zásada vyžaduje pro názvy filtrů Liquid písmena Pascal (například "AtLeast" místo "at_least").
- břišní svaly
- Připojit
- Alespoň
- Nejvíce atmost
- Kapitalizovat
- kompaktní
- Měna
- Datum
- Výchozí
- Děleno
- Malá písmena
- Útěk
- První
- H
- Připojení
- Poslední
- Lstrip
- Mapovat
- Záporný
- Zbytek po dělení
- NewlineToBr
- Kladný
- Předpend
- Odebrat
- RemoveFirst
- Nahradit
- ReplaceFirst
- Zaokrouhlit
- Rstrip
- Velikost
- Řez
- Seřadit
- Rozděleno
- Pruh
- StripHtml
- StripNewlines
- Časy
- Zkrátit
- TruncateWords
- Uniq
- Velká písmena
- dekódování URL
- Kódování URL
Příklady
Text literálu
<set-body>Hello world!</set-body>
Přístup 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řístup k textu jako objektU JObject
Vzhledem k tomu, že původní text požadavku si nezarezervujeme, bude mít přístup později v kanálu 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ést 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. Příklad back-endové odpovědi 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>
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
<set-body template="liquid">
{
"order": {
"id": "{{body.customer.purchase.identifier}}",
"summary": "{{body.customer.purchase.orderShortDesc}}"
}
}
</set-body>
Přístup k textu jako dat formulářů kódovaným adresou URL
Následující příklad používá AsFormUrlEncodedContent() výraz pro přístup k textu požadavku jako data formuláře kódované adresou URL (typ application/x-www-form-urlencodedobsahu) a pak ho převede na JSON. Vzhledem k tomu, že původní text požadavku si nezarezervujeme, bude mít přístup později v kanálu výjimku.
<set-body>
@{
var inBody = context.Request.Body.AsFormUrlEncodedContent();
return JsonConvert.SerializeObject(inBody);
}
</set-body>
Přístup k datům formuláře kódovaný adresou URL a vrácení textu
Následující příklad používá AsFormUrlEncodedContent() výraz pro přístup k textu požadavku jako data formuláře kódované adresou URL (typ application/x-www-form-urlencodedobsahu), přidá data do datové části a vrátí data formuláře kódovaná adresou URL. Vzhledem k tomu, že původní text požadavku si nezarezervujeme, bude mít přístup později v kanálu výjimku.
<set-body>
@{
var body = context.Request.Body.AsFormUrlEncodedContent();
body["newKey"].Add("newValue");
return body.ToFormUrlEncodedContent();
}
</set-body>
Související zásady
Související obsah
Další informace o práci se zásadami najdete v tématech:
- Kurz: Transformace a ochrana rozhraní API
- Referenční informace o zásadách pro úplný seznam prohlášení o zásadách a jejich nastavení
- Výrazy zásad
- Nastavení nebo úprava zásad
- Opakované použití konfigurací zásad
- Úložiště fragmentů zásad
- úložiště ukázek Policy
- Sada nástrojů zásad služby Azure API Management
- Získejte asistenci Copilotu při vytváření, vysvětlování a řešení problémů se zásadami.