Tratamento de código de status com Web.Contents
A função Web.Contents
tem algumas funcionalidades internas para tratar determinados códigos de status de HTTP. O comportamento padrão pode ser substituído na extensão usando o campo ManualStatusHandling
no registro de opções.
A repetição automática
Web.Contents
repetirá automaticamente as solicitações que falharem com um dos seguintes códigos de status:
Código | Status |
---|---|
408 | Tempo Limite da Solicitação |
429 | Número Excessivo de Solicitações |
503 | Serviço indisponível |
504 | Tempo Limite do Gateway |
509 | Limite de Largura de Banda Excedido |
As solicitações serão repetidas até três vezes antes de falhar. O mecanismo usa um algoritmo de back-off exponencial para determinar quanto tempo deve aguardar até a próxima repetição, a menos que a resposta contenha um cabeçalho Retry-after
. Quando o cabeçalho é encontrado, o mecanismo aguarda o número especificado de segundos antes da próxima repetição. O tempo mínimo de espera suportado é de 0,5 segundos, e o valor máximo é de 120 segundos.
Observação
O valor Retry-after
deve estar no formato delta-seconds
. O formato HTTP-date
não é suportado no momento.
Exceções de autenticação
Os códigos de status a seguir resultarão em uma exceção de credenciais, causando um prompt de autenticação solicitando que o usuário forneça credenciais (ou entre novamente no caso de um token OAuth expirado).
Código | Status |
---|---|
401 | Não Autorizado |
403 | Proibido |
Observação
As extensões podem usar a opção ManualStatusHandling
com os códigos de status 401 e 403, o que não é algo que pode ser feito em chamadas Web.Contents
feitas fora de um conector de dados personalizado (ou seja, diretamente do Power Query).
Redirecionamento
Os seguintes códigos de status resultarão em um redirecionamento automático para o URI especificado no cabeçalho Location
. A falta do cabeçalho Location
resultará em um erro.
Código | Status |
---|---|
300 | Várias opções |
301 | Movido Permanentemente |
302 | Encontrado |
303 | Ver outro |
307 | Redirecionamento Temporário |
Observação
Somente o código de status 307 manterá um método de solicitação POST
. Todos os outros códigos de status de redirecionamento resultarão em uma mudança para GET
.