Condividi tramite


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 sotto carico elevato. Usando il proxy di sviluppo, è possibile simulare le risposte di limitazione e verificare se l'applicazione lo 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 esegni come indicato dall'API.

Per iniziare, abilitare GraphRandomErrorPlugin e RetryAfterPlugin nel file di configurazione del proxy di sviluppo.

{
  "$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 RetryAfterPlugin GraphRandomErrorPlugin nel file di configurazione. Se lo si aggiunge dopo, la richiesta verrà non riuscita da GraphRandomErrorPlugin prima che abbia RetryAfterPlugin 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. Per migliorare il modo in cui l'app gestisce la limitazione, aggiornare il codice per attendere la quantità di tempo specificata nell'intestazione Retry-After prima di ripetere la richiesta.