GraphRandomErrorPlugin

Falha nas solicitações feitas ao Microsoft Graph com erros aleatórios.

Captura de tela de um prompt de comando com o Proxy de Desenvolvimento simulando um erro aleatório para uma solicitação do Microsoft Graph.

Exemplo de configuração

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "GraphRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "graphRandomErrorPlugin"
    }
  ],
  "graphRandomErrorPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/graphrandomerrorplugin.schema.json",
    "allowedErrors": [ 429, 500, 502, 503, 504, 507 ]
  }
}

Propriedades de configuração

Propriedade Descrição Inadimplência
allowedErrors Lista de códigos de status HTTP que o Proxy de Desenvolvimento pode produzir. 429 500 502 503 504 507
rate O percentual de solicitações a falhar com um erro aleatório. Valor entre 0 e 100. 50
retryAfterInSeconds Valor do cabeçalho Retry-After em segundos. 5

Opções de linha de comando

Nome Descrição Inadimplência
-a, --allowed-errors Lista de códigos de status HTTP que o Proxy de Desenvolvimento pode produzir. 429 500 502 503 504 507
-f, --failure-rate <failure rate> O percentual de solicitações a falhar com um erro aleatório. Valor entre 0 e 100. 50

Códigos de status de erro HTTP usados pelo Microsoft Graph

O Microsoft Graph usa os seguintes códigos de status HTTP.

Ponta

Descrições de códigos de status de resposta HTTP

Code Nome Descrição
429 Muitas solicitações Indica que o usuário enviou muitas solicitações em um determinado período de tempo ("limitação de taxa"). Um cabeçalho Retry-After pode ser incluído nessa resposta indicando quanto tempo aguardar antes de fazer uma nova solicitação.
500 Erro interno do servidor Indica que o servidor encontrou uma condição inesperada que o impediu de atender à solicitação. Essa resposta de erro é uma resposta genérica "catch-all". Normalmente, isso indica que o servidor não consegue encontrar um código de erro 5xx melhor para resposta.
502 Gateway inválido Indica que o servidor, ao agir como um gateway ou proxy, recebeu uma resposta inválida do servidor upstream.
503 Serviço indisponível Indica que o servidor não está pronto para lidar com a solicitação. As causas comuns são um servidor que está inativo para manutenção ou sobrecarregado. Essa resposta deve ser usada para condições temporárias e o Retry-After cabeçalho HTTP deve, se possível, conter o tempo estimado para a recuperação do serviço.
504 Tempo limite do gateway Indica que o servidor, ao agir como um gateway ou proxy, não conseguiu uma resposta a tempo do servidor upstream necessário para concluir a solicitação.
507 Armazenamento insuficiente Pode ser fornecido no contexto do protocolo WebDAV (Criação Distribuída da Web e Controle de Versão) (consulte RFC 4918). Indica que um método não pôde ser executado porque o servidor não pode armazenar a representação necessária para concluir a solicitação com êxito.

Comentários

O Proxy de Desenvolvimento limita os erros simulados para cada método HTTP aos erros que Microsoft Graph retorna para esse método. GETe PATCH solicitações usam 429, 500, , 502e 503504. POST, PUTe DELETE as solicitações também usam 507. Quando você define allowedErrors, o Proxy de Desenvolvimento usa apenas os erros permitidos que se aplicam a cada método. Por exemplo, se você definir allowedErrors como[ 507 ], o Proxy de Desenvolvimento falhar PUTPOSTe DELETE as solicitações, mas não GET ou PATCH solicitações.

Se nenhum dos erros permitidos se aplicar ao método de uma solicitação, o Proxy de Desenvolvimento passará a solicitação para Microsoft Graph. O Proxy de Desenvolvimento também passa por solicitações que usam outros métodos HTTP, como HEAD ou OPTIONS. Para solicitações em lote, se qualquer solicitação no lote não tiver erros permitidos, o Proxy de Desenvolvimento passará todo o lote, pois uma resposta em lote deve incluir uma resposta para cada solicitação no lote.

Próxima etapa