Prueba de que mi aplicación controla correctamente la limitación
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 usas, devuelve un Retry-After
encabezado, usa RetryAfterPlugin para comprobar que la aplicación se vuelve a desactivar 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.14.1/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.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"
}
}
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.14.1/genericrandomerrorplugin.schema.json",
"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 encabezado de Retry-After
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 compruebe 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.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"
}
}
]
}
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.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"
}
}
]
}
Además, amplíe la configuración del proxy de desarrollo con .RetryAfterPlugin
{
"$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"
}
}
Precaución
Agregue el RetryAfterPlugin
elemento antes de en el GenericRandomErrorPlugin
archivo de configuración. Si lo agrega después, se producirá un error en la solicitud antes GenericRandomErrorPlugin
RetryAfterPlugin
de 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.
Más información
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de