Tester que mon application gère correctement la limitation
Le test de limitation est difficile, car il se produit rarement, uniquement lorsque le serveur hébergeant l’API est sous une charge importante. À l’aide du proxy de développement, vous pouvez simuler la limitation sur n’importe quelle API et vérifier si votre application la gère correctement.
Pour simuler la limitation sur n’importe quelle API, utilisez GenericRandomErrorPlugin. Si l’API que vous utilisez, retourne un Retry-After
en-tête, utilisez RetryAfterPlugin pour vérifier que votre application est désactivée comme indiqué par l’API.
Simuler la limitation sur n’importe quelle API
Pour commencer, activez le GenericRandomErrorPlugin
fichier de configuration de votre proxy de développement.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/rc.schema.json",
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "errorsContosoApi",
"urlsToWatch": [
"https://api.contoso.com/*"
]
}
]
}
Ensuite, configurez le plug-in pour utiliser un fichier qui contient les erreurs que vous souhaitez simuler.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.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"
}
}
Dans le fichier d’erreurs, définissez la réponse de limitation afin qu’elle corresponde à la réponse de limitation réelle de votre API :
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.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"
}
}
]
}
]
}
Démarrez le proxy de développement avec votre fichier de configuration et testez votre application pour voir comment elle gère la limitation.
Tester la sauvegarde correcte avec l’en-tête Retry-After
De nombreuses API utilisent l’en-tête Retry-After
de réponse pour indiquer à l’application de se retirer pendant une durée spécifique. Lors de la simulation de réponses de limitation à l’aide du proxy de développement, vous pouvez configurer l’en-tête Retry-After
sur une valeur statique ou utiliser une valeur dynamique qui teste si votre application attend comme indiqué avant d’appeler à nouveau l’API.
Pour configurer l’en-tête Retry-After
sur une valeur statique, ajoutez l’en-tête à votre réponse de limitation :
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.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"
}
}
]
}
]
}
Dans cet exemple, l’en-tête Retry-After
est défini sur 60 secondes. Lorsque vous configurez l’en-tête sur une valeur statique, le proxy de développement ne contrôle pas si votre application attend avant d’appeler à nouveau l’API.
Pour tester si votre application attend correctement avant d’appeler à nouveau l’API, remplacez la valeur de l’en-tête par @dynamic
:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.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"
}
}
]
}
]
}
En outre, étendez la configuration de votre proxy de développement avec le RetryAfterPlugin
fichier .
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.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"
}
}
Attention
Ajoutez le RetryAfterPlugin
GenericRandomErrorPlugin
fichier de configuration avant. Si vous l’ajoutez après, la demande échoue avant GenericRandomErrorPlugin
que la RetryAfterPlugin
demande ne puisse la gérer.
Ce plug-in effectue le suivi des réponses de limitation et échoue avec force les demandes émises aux API qui sont toujours limitées.