Обработка кодов состояния с помощью 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.