Simulare la limitazione delle richieste nelle API di Microsoft 365

In genere, la limitazione dei test è difficile perché si verifica raramente, quando i server Microsoft 365 sono sottoposti a carico elevato. Usando il proxy di sviluppo, è possibile simulare le risposte di limitazione e verificare se l'applicazione la gestisce correttamente.

Per simulare la limitazione delle richieste nelle API di Microsoft 365, usare GraphRandomErrorPlugin e RetryAfterPlugin. Restituisce GraphRandomErrorPlugin le risposte di limitazione per le API di Microsoft 365. RetryAfterPlugin Verifica che l'app ridistrutti come indicato dall'API.

Per iniziare, abilitare GraphRandomErrorPlugin e RetryAfterPlugin nel file di configurazione di Dev Proxy.

{
  "$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"
    },
    {
      "name": "GraphRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-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/*"
  ]
}

Attenzione

Aggiungere prima di RetryAfterPluginGraphRandomErrorPlugin nel file di configurazione. Se lo si aggiunge dopo, la richiesta verrà non riuscita da GraphRandomErrorPlugin prima che l'oggetto RetryAfterPlugin abbia la possibilità di gestirla.

Configurare quindi per GraphRandomErrorPlugin simulare gli errori di limitazione.

{
  "$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"
    },
    {
      "name": "GraphRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-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 ]
  }
}

Avviare Dev Proxy con il file di configurazione e testare l'app per vedere come gestisce la limitazione.

Se l'applicazione viene disattivata quando viene limitata, ma non attende il periodo di tempo specificato nelle richieste, viene visualizzato un messaggio simile a Calling https://graph.microsoft.com/v1.0/endpoint again before waiting for the Retry-After period. Request will be throttled.

Questo messaggio indica che l'applicazione non gestisce correttamente la limitazione e che, inutilmente, prolungare la limitazione delle richieste. Per migliorare il modo in cui l'app gestisce la limitazione, aggiornare il codice in modo che attenda il periodo di tempo specificato nell'intestazione Retry-After prima di ritentare la richiesta.