Zásady ve službě Azure API Management
PLATÍ PRO: Všechny úrovně služby API Management
Ve službě Azure API Management můžou vydavatelé rozhraní API měnit chování rozhraní API prostřednictvím konfigurace pomocí zásad. Zásady představují kolekci příkazů, které se postupně provádí na základě požadavku nebo odezvy z rozhraní API. Služba API Management nabízí více než 50 zásad, které můžete nakonfigurovat tak, aby řešily běžné scénáře rozhraní API, jako je ověřování, omezování rychlosti, ukládání do mezipaměti a transformace požadavků nebo odpovědí. Úplný seznam najdete v referenčních informacích k zásadám API Management.
Mezi oblíbené zásady patří:
- Formát převodu z XML na JSON
- Omezení četnosti hovorů za účelem omezení počtu příchozích hovorů od vývojáře
- Filtrování požadavků, které přicházejí z určitých IP adres
Zásady se použijí uvnitř brány mezi uživatelem rozhraní API a spravovaným rozhraním API. Zatímco brána přijímá požadavky a předá je beze změny do podkladového rozhraní API, zásady můžou použít změny příchozího požadavku i odchozí odpovědi.
Principy konfigurace zásad
Definice zásad jsou jednoduché dokumenty XML, které popisují posloupnost příkazů, které se mají použít na požadavky a odpovědi. Portál nabízí tyto možnosti, které vám pomůžou s konfigurací definic zásad:
- Editor založený na formulářích, který zjednodušuje konfiguraci oblíbených zásad bez kódování XML
- Editor kódu, do kterého můžete vkládat fragmenty KÓDU XML nebo upravovat XML přímo
Další informace o konfiguraci zásad najdete v tématu Nastavení nebo úprava zásad.
Konfigurace XML zásad je rozdělena do inbound
, backend
, outbound
a on-error
oddíly. Tato série zadaných prohlášení zásad se provádí v pořadí pro požadavek a odpověď.
<policies>
<inbound>
<!-- statements to be applied to the request go here -->
</inbound>
<backend>
<!-- statements to be applied before the request is forwarded to
the backend service go here -->
</backend>
<outbound>
<!-- statements to be applied to the response go here -->
</outbound>
<on-error>
<!-- statements to be applied if there is an error condition go here -->
</on-error>
</policies>
Příklady xml zásad najdete v úložišti fragmentů zásad služby API Management.
Zpracování chyb
Pokud během zpracování požadavku dojde k chybě:
- Všechny zbývající kroky v oddílu
inbound
nebobackend
outbound
oddílu se přeskočí. - Provádění přeskočí na příkazy v oddílu
on-error
.
Umístěním prohlášení o zásadách do on-error
části můžete:
- Zkontrolujte chybu pomocí
context.LastError
vlastnosti. - Zkontrolujte a přizpůsobte odpověď na chybu pomocí
set-body
zásad. - Nakonfigurujte, co se stane, když dojde k chybě.
Další informace najdete v tématu Zpracování chyb v zásadách služby API Management.
Výrazy zásad
Pokud zásada neurčí jinak, výrazy zásad se dají použít jako hodnoty atributů nebo textové hodnoty v některé ze zásad služby API Management. Výraz zásad je buď:
- jeden příkaz jazyka C# uzavřený v
@(expression)
, nebo - blok kódu jazyka C# s více příkazy, který je uzavřený ,
@{expression}
který vrací hodnotu
Každý výraz má přístup k implicitně poskytnuté context
proměnné a povolené podmnožině typů rozhraní .NET Framework.
Výrazy zásad poskytují sofistikované prostředky pro řízení provozu a úpravu chování rozhraní API bez nutnosti psát specializovaný kód nebo upravovat back-endové služby. Některé zásady jsou založené na výrazech zásad, jako je tok řízení a proměnná Set.
Rozsahy
SLUŽBA API Management umožňuje definovat zásady v následujících oborech, od nejširšího po nejužší:
- Globální (všechna rozhraní API)
- Pracovní prostor (všechna rozhraní API přidružená k vybranému pracovnímu prostoru)
- Produkt (všechna rozhraní API přidružená k vybranému produktu)
- ROZHRANÍ API (všechny operace v rozhraní API)
- Operace (jedna operace v rozhraní API)
Při konfiguraci zásady musíte nejprve vybrat obor, na který se zásada vztahuje.
Co je třeba vědět
Pro jemně odstupňované řízení pro různé uživatele rozhraní API můžete nakonfigurovat definice zásad ve více než jednom oboru.
Ne všechny zásady se podporují v každém oboru a oddílu zásad.
Při konfiguraci definic zásad ve více než jednom oboru řídíte dědičnost zásad a pořadí vyhodnocení zásad v každé části zásad umístěním
base
prvku.Zásady použité na požadavky rozhraní API mají vliv také na kontext požadavku, včetně přítomnosti nebo nepřítomnosti klíče předplatného použitého v požadavku, rozhraní API nebo rozsahu produktu klíče předplatného a toho, jestli rozhraní API nebo produkt vyžaduje předplatné.
Poznámka:
Pokud používáte předplatné s oborem rozhraní API, předplatné all-API nebo předdefinované předplatné s přístupem, zásady nakonfigurované v oboru produktu se na žádosti z tohoto předplatného nepoužijí.
Další informace naleznete v tématu:
Zásady překladače GraphQL
Ve službě API Management je překladač GraphQL nakonfigurovaný pomocí zásad omezených na konkrétní typ operace a pole ve schématu GraphQL.
- Api Management v současné době podporuje překladače GraphQL, které určují zdroje dat HTTP API, Cosmos DB nebo Azure SQL. Můžete například nakonfigurovat jednu
http-data-source
zásadu s prvky, které určují požadavek na zdroj dat HTTP (a volitelně na odpověď). - Zásady překladače nemůžete zahrnout do definic zásad v jiných oborech, jako jsou rozhraní API, produkt nebo všechna rozhraní API. Také nedědí zásady nakonfigurované v jiných oborech.
- Brána vyhodnocuje zásadu s oborem překladače po všech nakonfigurovaných
inbound
abackend
zásadách v kanálu spouštění zásad.
Další informace najdete v tématu Konfigurace překladače GraphQL.
Získání pomoci s vytvářením zásad pomocí Microsoft Copilotu v Azure (Preview)
Microsoft Copilot v Azure (Preview) poskytuje možnosti vytváření zásad pro Azure API Management. Pomocí Copilotu v Azure v kontextu editoru zásad služby API Management můžete vytvářet zásady, které odpovídají vašim konkrétním požadavkům, aniž byste znali syntaxi nebo už jste nakonfigurovali zásady.
Můžete vyzvat Copilot v Azure, aby vygeneroval definice zásad, pak výsledky zkopírujte do editoru zásad a proveďte potřebné úpravy. Položte otázky, abyste získali přehled o různých možnostech, upravili poskytnuté zásady nebo objasnili zásady, které už máte. Další informace
Příklady
Použití zásad zadaných v různých oborech
Pokud máte zásady na globální úrovni a zásady nakonfigurované pro rozhraní API, je možné obě zásady použít při každém použití tohoto konkrétního rozhraní API. Služba API Management umožňuje deterministické řazení kombinovaných příkazů zásad prostřednictvím elementu base
.
Příklad definice zásady v oboru rozhraní API:
<policies>
<inbound>
<cross-domain />
<base />
<find-and-replace from="xyz" to="abc" />
</inbound>
</policies>
V ukázkové definici zásady výše:
- Příkaz
cross-domain
by se spustil jako první. - Zásady
find-and-replace
by se spouštěly po jakýchkoli zásadách v širším rozsahu.
Poznámka:
Pokud odeberete base
prvek v oboru rozhraní API, použijí se pouze zásady nakonfigurované v oboru rozhraní API. Produkt ani globální zásady rozsahu by se nepoužádly.
Použití výrazů zásad k úpravě požadavků
Následující příklad používá výrazy zásad a set-header
zásady k přidání uživatelských dat do příchozího požadavku. Přidaná hlavička obsahuje ID uživatele přidruženého k klíči předplatného v požadavku a oblast, kde brána zpracovává požadavek, je hostovaná.
<policies>
<inbound>
<base />
<set-header name="x-request-context-data" exists-action="override">
<value>@(context.User.Id)</value>
<value>@(context.Deployment.Region)</value>
</set-header>
</inbound>
</policies>
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
- Vytváření zásad pomocí Microsoft Copilotu v Azure