Otestujte, že aplikace správně zpracovává omezování.
Testování omezování je obtížné, protože k němu dochází zřídka, pouze když je server hostující rozhraní API pod velkým zatížením. Pomocí vývojového proxy serveru můžete simulovat omezování v libovolném rozhraní API a zkontrolovat, jestli ho vaše aplikace zpracovává správně.
Pokud chcete simulovat omezování v libovolném rozhraní API, použijte GenericRandomErrorPlugin. Pokud rozhraní API, které používáte, vrátí hlavičku Retry-After
, pomocí rutiny RetryAfterPlugin ověřte, že se aplikace vrátí zpět podle pokynů rozhraní API.
Simulace omezování v libovolném rozhraní API
Začněte tím, že v konfiguračním GenericRandomErrorPlugin
souboru dev proxy povolíte .
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/rc.schema.json",
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "errorsContosoApi",
"urlsToWatch": [
"https://api.contoso.com/*"
]
}
]
}
Dále nakonfigurujte modul plug-in tak, aby používal soubor obsahující chyby, které chcete simulovat.
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/rc.schema.json",
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "errorsContosoApi",
"urlsToWatch": [
"https://api.contoso.com/*"
]
}
],
"errorsContosoApi": {
"errorsFile": "errors-contoso-api.json"
}
}
V souboru chyb definujte odpověď na omezení tak, aby odpovídala skutečné odpovědi na omezování vašeho rozhraní API:
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/genericrandomerrorplugin.schema.json",
"responses": [
{
"statusCode": 429,
"headers": [
{
"name": "Content-Type",
"value": "application/json"
}
],
"body": {
"code": "TooManyRequests",
"message": "Too many requests"
}
}
]
}
Spusťte proxy vývoj pomocí konfiguračního souboru a otestujte aplikaci, abyste zjistili, jak zvládá omezování.
Otestujte správné zásady pomocí hlavičky.Retry-After
Mnoho rozhraní API používá hlavičku Retry-After
odpovědi k pokynu aplikaci, aby na určitou dobu couvla. Při simulaci odpovědí na omezování pomocí vývojového Retry-After
proxy serveru můžete buď nakonfigurovat statickou hodnotu v hlavičce, nebo použít dynamickou hodnotu, která podle pokynů před opětovným voláním rozhraní API otestuje, jestli vaše aplikace čeká.
Pokud chcete nakonfigurovat hlavičku Retry-After
na statickou hodnotu, přidejte ji do odpovědi na omezení:
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/genericrandomerrorplugin.schema.json",
"responses": [
{
"statusCode": 429,
"headers": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Retry-After",
"value": "60"
}
],
"body": {
"code": "TooManyRequests",
"message": "Too many requests"
}
}
]
}
V tomto příkladu je hlavička Retry-After
nastavená na 60 sekund. Když nakonfigurujete hlavičku na statickou hodnotu, dev Proxy nekontroluje, jestli vaše aplikace čeká před opětovným voláním rozhraní API.
Pokud chcete otestovat, jestli vaše aplikace před dalším voláním rozhraní API správně čeká, změňte hodnotu hlavičky na @dynamic
:
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/genericrandomerrorplugin.schema.json",
"responses": [
{
"statusCode": 429,
"headers": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Retry-After",
"value": "@dynamic"
}
],
"body": {
"code": "TooManyRequests",
"message": "Too many requests"
}
}
]
}
Kromě toho rozšiřte konfiguraci vývojového RetryAfterPlugin
proxy serveru pomocí .
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/rc.schema.json",
"plugins": [
{
"name": "RetryAfterPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"urlsToWatch": [
"https://api.contoso.com/*"
]
},
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "errorsContosoApi",
"urlsToWatch": [
"https://api.contoso.com/*"
]
}
],
"errorsContosoApi": {
"errorsFile": "errors-contoso-api.json"
}
}
Upozornění
Do konfiguračního RetryAfterPlugin
GenericRandomErrorPlugin
souboru přidejte před . Pokud ho přidáte za, požadavek se nezdaří, GenericRandomErrorPlugin
než RetryAfterPlugin
bude mít možnost ho zpracovat.
Tento modul plug-in sleduje omezování odpovědí a vynuceně selhávají požadavky vydané rozhraním API, které jsou stále omezené.
Další informace
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro