Compartir a través de


Simular la limitación en las API de Microsoft 365

De un vistazo
Objetivo: Probar cómo maneja tu aplicación la limitación de la API de Microsoft 365
Hora: 10 minutos
Plugins:GraphRandomErrorPlugin, RetryAfterPlugin
Requisitos previos:Configuración del proxy de desarrollo

Normalmente, la limitación de pruebas es difícil porque rara vez se produce cuando los servidores de Microsoft 365 están bajo una carga pesada. Con el proxy de desarrollo, puede simular respuestas de limitación y comprobar si la aplicación la controla correctamente.

Para simular la limitación en las API de Microsoft 365, use GraphRandomErrorPlugin y RetryAfterPlugin. GraphRandomErrorPlugin devuelve respuestas de limitación para las API de Microsoft 365. RetryAfterPlugin Comprueba que la aplicación vuelve a desactivarse según lo indicado por la API.

Para empezar, habilite y GraphRandomErrorPlugin en el RetryAfterPlugin archivo de configuración del proxy de desarrollo.

Archivo:devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "RetryAfterPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    },
    {
      "name": "GraphRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "graphRandomErrorPlugin"
    }
  ],
  "urlsToWatch": [
    "https://graph.microsoft.com/v1.0/*",
    "https://graph.microsoft.com/beta/*",
    "https://graph.microsoft.us/v1.0/*",
    "https://graph.microsoft.us/beta/*",
    "https://dod-graph.microsoft.us/v1.0/*",
    "https://dod-graph.microsoft.us/beta/*",
    "https://microsoftgraph.chinacloudapi.cn/v1.0/*",
    "https://microsoftgraph.chinacloudapi.cn/beta/*",
    "!https://*.sharepoint.*/*_api/web/GetClientSideComponents",
    "https://*.sharepoint.*/*_api/*",
    "https://*.sharepoint.*/*_vti_bin/*",
    "https://*.sharepoint-df.*/*_api/*",
    "https://*.sharepoint-df.*/*_vti_bin/*"
  ]
}

Precaución

Agregue antes del RetryAfterPlugin elemento en el GraphRandomErrorPlugin archivo de configuración. Si lo agrega después, se producirá un error en GraphRandomErrorPlugin la solicitud antes de RetryAfterPlugin que tenga la oportunidad de controlarla.

A continuación, configure GraphRandomErrorPlugin para simular errores de limitación.

Archivo:devproxyrc.json (configuración completa)

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "RetryAfterPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    },
    {
      "name": "GraphRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "graphRandomErrorPlugin"
    }
  ],
  "urlsToWatch": [
    "https://graph.microsoft.com/v1.0/*",
    "https://graph.microsoft.com/beta/*",
    "https://graph.microsoft.us/v1.0/*",
    "https://graph.microsoft.us/beta/*",
    "https://dod-graph.microsoft.us/v1.0/*",
    "https://dod-graph.microsoft.us/beta/*",
    "https://microsoftgraph.chinacloudapi.cn/v1.0/*",
    "https://microsoftgraph.chinacloudapi.cn/beta/*",
    "!https://*.sharepoint.*/*_api/web/GetClientSideComponents",
    "https://*.sharepoint.*/*_api/*",
    "https://*.sharepoint.*/*_vti_bin/*",
    "https://*.sharepoint-df.*/*_api/*",
    "https://*.sharepoint-df.*/*_vti_bin/*"
  ],
  "graphRandomErrorPlugin": {
    "allowedErrors": [ 429 ]
  }
}

Inicie Dev Proxy con el archivo de configuración y pruebe la aplicación para ver cómo controla la limitación.

Si la aplicación vuelve a desactivarse cuando se limita, pero no espera la cantidad de tiempo especificada en las solicitudes, verá un mensaje similar a Calling https://graph.microsoft.com/v1.0/endpoint again before waiting for the Retry-After period. Request will be throttled.

Este mensaje indica que la aplicación no controla la limitación correctamente y, innecesariamente, prolonga la limitación. Para mejorar la forma en que la aplicación controla la limitación, actualice el código para esperar la cantidad de tiempo especificada en el Retry-After encabezado antes de volver a intentar la solicitud.

Consulte también