Обработка кода состояния с помощью Web.Contents

Функция Web.Contents имеет некоторые встроенные функции для работы с определенными кодами состояния HTTP. Поведение по умолчанию можно переопределить в расширении с помощью ManualStatusHandling поля в записи параметров.

Автоматическая повторная попытка

Web.Contents будет автоматически повторять запросы, которые завершаются сбоем с одним из следующих кодов состояния:

Code Состояние
408 Истекло время ожидания запроса
429 Слишком много запросов
503 (Сервис временно недоступен) Служба недоступна
504 Время ожидания шлюза
509 Превышено ограничение пропускной способности

Запросы будут повторяться до трех раз до момента отказа. Подсистема использует экспоненциальный алгоритм бэк-офф, чтобы определить, сколько времени ждать до следующей повторной попытки, если ответ содержит Retry-after заголовок. При обнаружении заголовка движок будет ожидать указанного количества секунд до следующей попытки повторного выполнения. Минимальное поддерживаемое время ожидания — 0,5 секунды, а максимальное значение — 120 секунд.

Замечание

Значение Retry-after должно быть в delta-seconds формате. В настоящее время формат HTTP-date не поддерживается.

Исключения проверки подлинности

Следующие коды состояния приводят к исключению, связанному с учётными данными, вызывая запрос аутентификации, который просит пользователя предоставить учётные данные (или повторно войти в случае с истекшим сроком действия маркером OAuth).

Code Состояние
401 Не авторизовано
Ошибка 403: Доступ запрещён Запрещено

Замечание

Расширения могут использовать ManualStatusHandling опцию с кодами состояния 401 и 403, что нельзя сделать в Web.Contents вызовах за пределами пользовательского соединителя данных (то есть напрямую из Power Query).

Redirection

Следующие коды состояния приводят к автоматическому перенаправлению в универсальный код ресурса (URI), указанный в заголовке Location . Отсутствующий Location заголовок приведет к ошибке.

Code Состояние
300 Несколько вариантов
301 Перемещено навсегда
302 найден
303 См. другое
307 Временное перенаправление

Замечание

Только код состояния 307 будет хранить POST метод запроса. Все остальные коды состояния перенаправления приводят к GETпереключении на .