Sdílet prostřednictvím


Ověření stavových kódů

PLATÍ PRO: Všechny úrovně služby API Management

Zásada validate-status-code ověří stavové kódy HTTP v odpovědích na schéma rozhraní API. Tato zásada se může použít k zabránění úniku chyb back-endu, které můžou obsahovat trasování zásobníku.

Poznámka:

Maximální velikost schématu rozhraní API, které lze použít touto zásadou ověřování, je 4 MB. Pokud schéma tento limit překročí, zásady ověřování vrátí chyby za běhu. Pokud ho chcete zvýšit, obraťte se na podporu.

Poznámka:

Nastavte prvky zásad a podřízené prvky v pořadí uvedeném v prohlášení o zásadách. Portál poskytuje průvodce editorem založeným na formulářích, který vám pomůže s konfigurací této zásady. 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

<validate-status-code unspecified-status-code-action="ignore | prevent | detect" errors-variable-name="variable name">
    <status-code code="HTTP status code number" action="ignore | prevent | detect" />
</validate-status-code>

Atributy

Atribut Popis Požaduje se Výchozí
unspecified-status-code-action Akce , která se má provést pro stavové kódy HTTP v odpovědích, které nejsou zadané ve schématu rozhraní API Výrazy zásad jsou povolené. Yes
errors-variable-name Název proměnné context.Variables , do které se protokoluje chyby ověření. Výrazy zásad nejsou povolené. No

Elementy

Název Popis Povinní účastníci
stavový kód Přidejte jeden nebo více prvků pro stavové kódy HTTP pro přepsání výchozí ověřovací akce pro stavové kódy v odpovědích. No

atributy status-code

Atribut Popis Požaduje se Výchozí
code Stavový kód HTTP pro přepsání ověřovací akce. Yes
action Akce , která se má provést pro odpovídající stavový kód, který není zadaný ve schématu rozhraní API Pokud je stavový kód zadaný ve schématu rozhraní API, toto přepsání se neprojeví. Yes

Akce

Zásady ověřování obsahu zahrnují jeden nebo více atributů, které určují akci, kterou služba API Management provádí při ověřování entity v požadavku rozhraní API nebo odpovědi vůči schématu rozhraní API.

  • Pro elementy, které jsou reprezentované ve schématu rozhraní API, může být zadána akce a v závislosti na zásadách pro elementy, které nejsou reprezentovány ve schématu rozhraní API.

  • Akce zadaná v podřízené elementu zásady přepíše akci zadanou pro nadřazenou položku.

Dostupné akce:

Akce Popis
ignorovat Přeskočte ověření.
zabránit Zablokujte zpracování požadavku nebo odpovědi, zakažte podrobnou chybu ověření a vraťte chybu. Zpracování se přeruší při zjištění první sady chyb.
zjistit Chyby ověření protokolu bez přerušení zpracování požadavků nebo odpovědí

Využití

Poznámky k využití

  • Tuto zásadu je možné v oddílu zásad použít jenom jednou.

Protokoly

Podrobnosti o chybách ověřování během provádění zásad jsou zaznamenány do proměnné zadané context.Variables v errors-variable-name atributu v kořenovém elementu zásady. Při konfiguraci v prevent akci blokuje chyba ověření další zpracování požadavku nebo odpovědi a je také rozšířena do context.LastError vlastnosti.

K prošetření chyb použijte zásadu trasování k protokolování chyb z kontextových proměnných do Application Insights.

Vliv na výkon

Přidání zásady ověření může mít vliv na propustnost rozhraní API. Platí následující obecné principy:

  • Čím větší je velikost schématu rozhraní API, tím nižší bude propustnost.
  • Čím větší je datová část v požadavku nebo odpovědi, tím nižší bude propustnost.
  • Velikost schématu rozhraní API má větší vliv na výkon než velikost datové části.
  • Ověření vůči schématu rozhraní API, které má velikost několika megabajtů, může způsobit vypršení časového limitu požadavků nebo odpovědí za určitých podmínek. Účinek je výraznější v úrovních Consumption a Developer služby.

Doporučujeme provádět zátěžové testy s očekávanými produkčními úlohami, abyste posoudili dopad zásad ověřování na propustnost rozhraní API.

Příklad

<validate-status-code unspecified-status-code-action="prevent" errors-variable-name="responseStatusCodeValidation" />

Chyby ověření

Služba API Management generuje chyby ověření obsahu v následujícím formátu:

{
 "Name": string,
 "Type": string,
 "ValidationRule": string,
 "Details": string,
 "Action": string
}

Následující tabulka uvádí všechny možné chyby zásad ověřování.

  • Podrobnosti: Je možné použít k prošetření chyb. Nemělo by se sdílet veřejně.
  • Veřejná odpověď: Chyba vrácená klientovi. Nedochází k úniku podrobností implementace.

Když zásada ověření určuje prevent akci a vygeneruje chybu, odpověď ze služby API Management obsahuje stavový kód HTTP: 400, když se zásada použije v příchozí části, a 502, když se zásada použije v odchozím oddílu.

Název Typ Ověřovací pravidlo Podrobnosti Veřejná odpověď Akce
validate-content
RequestBody SizeLimit Text požadavku je {size} bajtů dlouhý a překračuje nakonfigurovaný limit počtu bajtů {maxSize}. Text požadavku je {size} bajtů dlouhý a překračuje limit {maxSize} bajtů. detekce nebo prevence
ResponseBody SizeLimit Text odpovědi má délku {size} bajtů a překračuje nakonfigurovaný limit počtu bajtů {maxSize}. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{messageContentType} RequestBody Nespecifikovaný Zadaný typ obsahu {messageContentType} není povolený. Zadaný typ obsahu {messageContentType} není povolený. detekce nebo prevence
{messageContentType} ResponseBody Nespecifikovaný Zadaný typ obsahu {messageContentType} není povolený. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
ApiSchema Schéma rozhraní API neexistuje nebo ho nelze přeložit. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
ApiSchema Schéma rozhraní API nezadává definice. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{messageContentType} RequestBody / ResponseBody MissingDefinition Schéma rozhraní API neobsahuje definici {definitionName}, která je přidružena k typu obsahu {messageContentType}. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{messageContentType} RequestBody Nesprávná zpráva Text požadavku neodpovídá definici {definitionName}, která je přidružena k typu obsahu {messageContentType}.

Řádek {valError.Message}: {valError.LineNumber}, pozice: {valError.LinePosition}
Text požadavku neodpovídá definici {definitionName}, která je přidružena k typu obsahu {messageContentType}.

Řádek {valError.Message}: {valError.LineNumber}, pozice: {valError.LinePosition}
detekce nebo prevence
{messageContentType} ResponseBody Nesprávná zpráva Text odpovědi neodpovídá definici {definitionName}, která je přidružena k typu obsahu {messageContentType}.

Řádek {valError.Message}: {valError.LineNumber}, pozice: {valError.LinePosition}
Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
RequestBody ValidationException Text požadavku nelze ověřit pro typ obsahu {messageContentType}.

{podrobnosti o výjimce}
Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
ResponseBody ValidationException Text odpovědi nelze ověřit pro typ obsahu {messageContentType}.

{podrobnosti o výjimce}
Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
validate-parameters / validate-headers
{paramName} / {headerName} QueryParameter / PathParameter / RequestHeader Nespecifikovaný Zadaný parametr {path / parametr dotazu / header} {paramName} není povolený. Zadaný parametr {path / parametr dotazu / header} {paramName} není povolený. detekce nebo prevence
{headerName} ResponseHeader Nespecifikovaný Nezadaná hlavička {headerName} není povolená. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
ApiSchema Schéma rozhraní API neexistuje nebo ho nelze přeložit. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
ApiSchema Schéma rozhraní API nezadává definice. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{paramName} QueryParameter / PathParameter / RequestHeader / ResponseHeader MissingDefinition Schéma rozhraní API neobsahuje definici {definitionName}, která je přidružená k {parametru dotazu / parametru cesty / header} {paramName}. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{paramName} QueryParameter / PathParameter / RequestHeader Nesprávná zpráva Požadavek nemůže obsahovat více hodnot pro {parametr dotazu / parametr cesty / header} {paramName}. Požadavek nemůže obsahovat více hodnot pro {parametr dotazu / parametr cesty / header} {paramName}. detekce nebo prevence
{headerName} ResponseHeader Nesprávná zpráva Odpověď nemůže obsahovat více hodnot hlavičky {headerName}. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{paramName} QueryParameter / PathParameter / RequestHeader Nesprávná zpráva Hodnota parametru dotazu / parametru cesty / header} {paramName} neodpovídá definici.

Řádek {valError.Message}: {valError.LineNumber}, pozice: {valError.LinePosition}
Hodnota parametru dotazu / parametru cesty / header} {paramName} neodpovídá definici.

Řádek {valError.Message}: {valError.LineNumber}, pozice: {valError.LinePosition}
detekce nebo prevence
{headerName} ResponseHeader Nesprávná zpráva Hodnota hlavičky {headerName} neodpovídá definici.

Řádek {valError.Message}: {valError.LineNumber}, pozice: {valError.LinePosition}
Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{paramName} QueryParameter / PathParameter / RequestHeader Nesprávná zpráva Hodnotu parametru dotazu / parametru cesty / header} {paramName} nelze analyzovat podle definice.

{ex. Zpráva}
Hodnotu parametru dotazu / parametru cesty / header} {paramName} nelze analyzovat podle definice.

{ex. Zpráva}
detekce nebo prevence
{headerName} ResponseHeader Nesprávná zpráva Hodnotu hlavičky {headerName} nelze analyzovat podle definice. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{paramName} QueryParameter / PathParameter / RequestHeader Chyba ověření {Parametr dotazu / Parametr cesty / Header} {paramName} nelze ověřit.

{podrobnosti o výjimce}
Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
{headerName} ResponseHeader Chyba ověření Hlavičku {headerName} nelze ověřit.

{podrobnosti o výjimce}
Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence
validate-status-code
{status-code} StatusCode Nespecifikovaný Stavový kód odpovědi {status-code} není povolen. Požadavek nelze zpracovat kvůli vnitřní chybě. Obraťte se na vlastníka rozhraní API. detekce nebo prevence

V následující tabulce jsou uvedeny všechny možné hodnoty důvodu chyby ověření spolu s možnými hodnotami zpráv:

Důvod Zpráva
Chybný požadavek {Details} pro kontextovou proměnnou, {Public response} pro klienta
Odpověď není povolena. {Details} pro kontextovou proměnnou, {Public response} pro klienta

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