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 pokud je server hostující rozhraní API zatížený velkým zatížením. Pomocí dev proxy serveru můžete simulovat omezování libovolného rozhraní API a zkontrolovat, jestli ji vaše aplikace zpracovává správně.
K simulaci omezování u libovolného rozhraní API použijte GenericRandomErrorPlugin. Pokud rozhraní API, které používáte, vrátí hlavičku Retry-After
, pomocí retryAfterPlugin ověřte, že se vaše aplikace znovu vypne podle pokynů rozhraní API.
Simulace omezování v libovolném rozhraní API
Začněte tím, že povolíte GenericRandomErrorPlugin
konfigurační soubor dev proxy serveru.
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.20.0/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.20.0/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ěď 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.20.0/genericrandomerrorplugin.schema.json",
"errors": [
{
"request": {
"url": "https://api.contoso.com/*"
},
"responses": [
{
"statusCode": 429,
"headers": [
{
"name": "Content-Type",
"value": "application/json"
}
],
"body": {
"code": "TooManyRequests",
"message": "Too many requests"
}
}
]
}
]
}
Spusťte dev Proxy s konfiguračním souborem a otestujte aplikaci, abyste viděli, jak zpracovává omezování.
Otestování správného zasunutí pomocí hlavičky Retry-After
Mnoho rozhraní API používá hlavičku Retry-After
odpovědi k pokynu aplikaci, aby se po určitou dobu vrátila zpět. Při simulaci odpovědí na omezování pomocí dev proxy serveru můžete buď nakonfigurovat hlavičku Retry-After
na statickou hodnotu, nebo použít dynamickou hodnotu, která testuje, jestli aplikace čeká podle pokynů před opětovným voláním rozhraní API.
Pokud chcete záhlaví nakonfigurovat Retry-After
na statickou hodnotu, přidejte hlavičku do odpovědi na omezování:
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.20.0/genericrandomerrorplugin.schema.json",
"errors": [
{
"request": {
"url": "https://api.contoso.com/*"
},
"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 aplikace správně čeká před opětovnou voláním rozhraní API, změňte hodnotu hlavičky na @dynamic
:
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.20.0/genericrandomerrorplugin.schema.json",
"errors": [
{
"request": {
"url": "https://api.contoso.com/*"
},
"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 proxy serveru pomocí nástroje RetryAfterPlugin
.
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.20.0/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í
Přidejte před RetryAfterPlugin
konfigurační GenericRandomErrorPlugin
soubor. Pokud ho přidáte později, požadavek se nezdaří GenericRandomErrorPlugin
předtím RetryAfterPlugin
, než bude mít možnost ji zpracovat.
Tento modul plug-in sleduje odpovědi na omezování a vynucuje neúspěšné požadavky vydané pro rozhraní API, která jsou stále omezena.