Tratamento de código de status com Web.Contents
A Web.Contents
função tem algumas funcionalidades internas para lidar com certos códigos de status HTTP. O comportamento padrão pode ser substituído em sua extensão usando o ManualStatusHandling
campo no registro de opções.
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 do Pedido |
429 | Demasiados pedidos |
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 esperar até a próxima nova tentativa, a menos que a resposta contenha um Retry-after
cabeçalho. Quando o cabeçalho for encontrado, o mecanismo aguardará o número especificado de segundos antes da próxima nova tentativa. O tempo mínimo de espera suportado é de 0,5 segundos e o valor máximo é de 120 segundos.
Nota
O Retry-after
valor deve estar no delta-seconds
formato. O HTTP-date
formato 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 |
Nota
As extensões são capazes de usar a opção com os códigos de status 401 e 403, o ManualStatusHandling
que não é algo que pode ser feito em Web.Contents
chamadas feitas fora de um conector de dados personalizado (ou seja, diretamente do Power Query).
Redirecionamento
Os códigos de status a seguir resultarão em um redirecionamento automático para o URI especificado no Location
cabeçalho. Um cabeçalho ausente Location
resultará em um erro.
Código | Status |
---|---|
400 | Múltiplas escolhas |
301 | Movido permanentemente |
302 | Encontrado |
303 | Ver Outros |
307 | Redirecionamento temporário |
Nota
Somente o código de status 307 manterá um POST
método de solicitação. Todos os outros códigos de status de redirecionamento resultarão em uma mudança para GET
.