Compartilhar via


Simular limitação em APIs do Microsoft 365

Normalmente, o teste de limitação é difícil porque ocorre raramente, quando os servidores do Microsoft 365 estão sob carga pesada. Usando o Dev Proxy, você pode simular respostas de limitação e verificar se seu aplicativo lida com isso corretamente.

Para simular a limitação nas APIs do Microsoft 365, use o GraphRandomErrorPlugin e o RetryAfterPlugin. O GraphRandomErrorPlugin retorna respostas de limitação para APIs do Microsoft 365. O RetryAfterPlugin verifica se o aplicativo recua conforme instruído pela API.

Para começar, habilite o GraphRandomErrorPlugin e RetryAfterPlugin no arquivo de configuração do 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/*"
  ]
}

Cuidado

Adicione o RetryAfterPlugin antes do GraphRandomErrorPlugin em seu arquivo de configuração. Se você adicioná-lo depois, a solicitação será falhada GraphRandomErrorPlugin pelo antes que ele RetryAfterPlugin tenha a chance de tratá-la.

Em seguida, configure o GraphRandomErrorPlugin para simular erros de limitação.

{
  "$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 ]
  }
}

Inicie o Dev Proxy com seu arquivo de configuração e teste seu aplicativo para ver como ele lida com a limitação.

Se o aplicativo recuar quando limitado, mas não aguardar o tempo especificado nas solicitações, você verá uma mensagem semelhante a Calling https://graph.microsoft.com/v1.0/endpoint again before waiting for the Retry-After period. Request will be throttled.

Essa mensagem indica que seu aplicativo não está lidando com a limitação corretamente e prolonga desnecessariamente a limitação. Para melhorar a forma como seu aplicativo lida com a limitação, atualize seu código para aguardar o tempo especificado no Retry-After cabeçalho antes de repetir a solicitação.