Testen of mijn toepassing bandbreedtebeperking goed verwerkt
Het testen van beperking is moeilijk omdat dit zelden gebeurt, alleen wanneer de server die als host fungeert voor de API zwaar wordt belast. Met behulp van de dev-proxy kunt u beperking voor elke API simuleren en controleren of uw toepassing deze correct verwerkt.
Gebruik de GenericRandomErrorPlugin om beperking op een API te simuleren. Als de API die u gebruikt, een Retry-After
header retourneert, gebruikt u RetryAfterPlugin om te controleren of uw app wordt teruggezet volgens de instructies van de API.
Beperking simuleren op elke API
Als u wilt beginnen, schakelt u het GenericRandomErrorPlugin
in uw Dev Proxy-configuratiebestand in.
{
"$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/*"
]
}
]
}
Configureer vervolgens de invoegtoepassing voor het gebruik van een bestand dat de fouten bevat die u wilt simuleren.
{
"$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"
}
}
Definieer in het foutenbestand het beperkingsantwoord zodat deze overeenkomt met het werkelijke beperkingsantwoord van uw 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"
}
}
]
}
]
}
Start Dev Proxy met uw configuratiebestand en test uw app om te zien hoe de beperking wordt verwerkt.
De juiste back-up testen met de Retry-After
koptekst
Veel API's gebruiken de Retry-After
antwoordheader om de app te instrueren om gedurende een bepaalde tijd een back-off uit te voeren. Wanneer u beperkingen simuleert met behulp van Dev Proxy, kunt u de Retry-After
header configureren op een statische waarde of een dynamische waarde gebruiken die test als uw app wacht zoals aangegeven voordat u de API opnieuw aanroept.
Als u de Retry-After
header wilt configureren voor een statische waarde, voegt u de header toe aan uw beperkingsreactie:
{
"$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"
}
}
]
}
]
}
In dit voorbeeld is de Retry-After
header ingesteld op 60 seconden. Wanneer u de header configureert voor een statische waarde, wordt dev proxy niet bepaald of uw app wacht voordat de API opnieuw wordt aangeroepen.
Als u wilt testen of uw app correct wacht voordat u de API opnieuw aanroept, wijzigt u de waarde van de header in @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"
}
}
]
}
]
}
Breid bovendien uw Dev Proxy-configuratie uit met de 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"
}
}
Let op
Voeg de voorvoeging RetryAfterPlugin
toe aan het GenericRandomErrorPlugin
configuratiebestand. Als u deze later toevoegt, wordt de aanvraag mislukt door de GenericRandomErrorPlugin
voordat de RetryAfterPlugin
aanvraag kan worden verwerkt.
Deze invoegtoepassing houdt de beperkingsreacties bij en mislukte aanvragen die zijn uitgegeven aan API's die nog steeds worden beperkt.