Prueba de que mi aplicación controla la limitación correctamente
La limitación de pruebas es difícil porque rara vez se produce, solo cuando el servidor que hospeda la API está bajo mucha carga. Con el proxy de desarrollo, puede simular la limitación en cualquier API y comprobar si la aplicación la controla correctamente.
Para simular la limitación en cualquier API, use GenericRandomErrorPlugin. Si la API que usa, devuelve un Retry-After
encabezado, use RetryAfterPlugin para comprobar que la aplicación vuelve a estar desactivada según lo indicado por la API.
Simulación de la limitación en cualquier API
Para empezar, habilite en el GenericRandomErrorPlugin
archivo de configuración del proxy de desarrollo.
{
"$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/*"
]
}
]
}
A continuación, configure el complemento para que use un archivo que contenga los errores que desea simular.
{
"$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"
}
}
En el archivo de errores, defina la respuesta de limitación para que coincida con la respuesta de limitación real de la 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"
}
}
]
}
]
}
Inicie Dev Proxy con el archivo de configuración y pruebe la aplicación para ver cómo controla la limitación.
Probar la copia de seguridad correcta con el Retry-After
encabezado
Muchas API usan el Retry-After
encabezado de respuesta para indicar a la aplicación que se vuelva a desactivar durante un período de tiempo específico. Al simular respuestas de limitación mediante el proxy de desarrollo, puedes configurar el Retry-After
encabezado en un valor estático o usar un valor dinámico que pruebe si la aplicación está esperando como se indica antes de volver a llamar a la API.
Para configurar el Retry-After
encabezado en un valor estático, agregue el encabezado a la respuesta de limitació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"
}
}
]
}
]
}
En este ejemplo, el Retry-After
encabezado se establece en 60 segundos. Al configurar el encabezado en un valor estático, El proxy de desarrollo no controla si la aplicación está esperando antes de volver a llamar a la API.
Para probar si la aplicación está esperando correctamente antes de volver a llamar a la API, cambie el valor del encabezado a @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"
}
}
]
}
]
}
Además, amplíe la configuración del proxy de desarrollo con .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"
}
}
Precaución
Agregue antes del RetryAfterPlugin
elemento en el GenericRandomErrorPlugin
archivo de configuración. Si lo agrega después, se producirá un error en GenericRandomErrorPlugin
la solicitud antes de RetryAfterPlugin
que tenga la oportunidad de controlarla.
Este complemento realiza un seguimiento de las respuestas de limitación y produce un error forzado de las solicitudes emitidas a las API que todavía están limitadas.