Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Tip
¿No conoce la limitación de velocidad? Aprenda qué es la limitación de velocidad y cómo gestionarla.
De un vistazo
Objetivo: Prueba cómo tu aplicación maneja la limitación de cualquier API
Tiempo: 15 minutos
Plugins:GenericRandomErrorPlugin, RetryAfterPlugin
Requisitos previos:Configuración del proxy de desarrollo
Es difícil probar la limitación de tasa porque ocurre rara vez, solo cuando el servidor que aloja la API está sometido a una carga elevada. Con Dev Proxy, puede simular la limitación de velocidad en cualquier API y comprobar si la aplicación la gestiona correctamente.
Para simular la limitación de velocidad en cualquier API, use el complemento 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.
Simular la limitación de velocidad en cualquier API
Para empezar, habilite el GenericRandomErrorPlugin en el archivo de configuración de Dev Proxy.
Archivo: devproxyrc.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.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.
Archivo: devproxyrc.json (con la configuración de errorsFile)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "errorsContosoApi",
"urlsToWatch": [
"https://api.contoso.com/*"
]
}
],
"errorsContosoApi": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.schema.json",
"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:
Archivo: errors-contoso-api.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.errorsfile.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 su archivo de configuración y pruebe su aplicación para ver cómo gestiona la limitación de velocidad.
Probar el retroceso correcto con la Retry-After cabecera
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 de velocidad con Dev Proxy, puedes configurar el encabezado Retry-After con un valor estático o usar un valor dinámico que compruebe si la aplicación espera el tiempo indicado antes de volver a llamar a la API.
Para configurar la cabecera Retry-After con un valor estático, añada la cabecera a su respuesta de limitación de velocidad:
Archivo: errors-contoso-api.json (con Retry-After estático)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.errorsfile.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. Cuando configuras el encabezado con un valor estático, Dev Proxy no controla si tu aplicación espera 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:
Archivo: errors-contoso-api.json (con Retry-After dinámico)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.errorsfile.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.
Archivo: devproxyrc.json (completo con RetryAfterPlugin)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
"plugins": [
{
"name": "RetryAfterPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"urlsToWatch": [
"https://api.contoso.com/*"
]
},
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "errorsContosoApi",
"urlsToWatch": [
"https://api.contoso.com/*"
]
}
],
"errorsContosoApi": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/genericrandomerrorplugin.schema.json",
"errorsFile": "errors-contoso-api.json"
}
}
Precaución
Añada el RetryAfterPlugin antes del GenericRandomErrorPlugin en su archivo de configuración. Si lo añade después, GenericRandomErrorPlugin hará que la solicitud falle antes de que RetryAfterPlugin tenga la oportunidad de procesarla.
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
Consulte también
- GenericRandomErrorPlugin : referencia completa
- < c0>RetryAfterPlugin - Verificar el comportamiento del reintento
- Simulación de la limitación en las API de Microsoft 365 : específico de Microsoft 365
- Simulación de respuestas de API de Rate-Limit : prueba de resistencia relacionada
- Usa Dev Proxy en CI/CD - Automatiza las pruebas de resiliencia en tu canalización
- Glosario : terminología del proxy de desarrollo