Partilhar via


Simular a limitação em APIs do Microsoft 365

Normalmente, a limitação de teste é difícil porque ocorre raramente, quando os servidores 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 em 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 seu 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/dotnet/dev-proxy/main/schemas/v0.24.0/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/*"
  ]
}

Atenção

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

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

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/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 seu aplicativo recuar quando limitado, mas não esperar pela quantidade de tempo especificada 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á manipulando a limitação corretamente e prolonga desnecessariamente a limitação. Para melhorar a forma como seu aplicativo lida com a Retry-After limitação, atualize seu código para aguardar a quantidade de tempo especificada no cabeçalho antes de tentar novamente a solicitação.