Compartir a través de


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 GenericRandomErrorPluginRetryAfterPlugin 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