Отправить HTTP-запрос
Важно
Для корректной работы HTTP-запросов необходимо разрешить вашему сервису принимать пакеты из сети Yandex Forms 2a02:6b8:c00::/40
по протоколу ipv6
. В ином случае файрвол вашего сервиса может блокировать данные, передаваемые формой.
Чтобы передать данные из формы в веб-сервис через API, используйте HTTP-запросы:
-
Выберите форму и перейдите на вкладку Интеграция.
-
Выберите группу действий, в которую вы хотите добавить HTTP-запрос, и внизу группы нажмите кнопку с нужным типом запроса:
-
Запрос JSON-RPC POST — отправить запрос по протоколу JSON-RPC.
-
Запрос заданным методом — отправить любые доступные данные формы с возможностью задать формат запроса и выбрать HTTP-метод.
Примечание
Все запросы выполняются асинхронно.
-
-
Укажите URL сервиса — адрес узла, предоставляющего API.
-
Задайте параметры, которые зависят от выбранного типа запроса:
-
Запрос JSON-RPC POST
-
Укажите метод сервиса, в который отправляется запрос.
-
Задайте параметры запроса. Для каждого параметра укажите имя и значение.
-
В качестве значений параметров можно использовать переменные. В этом случае включите опцию Передавать, если значение задано.
-
-
Запрос заданным методом
-
Выберите HTTP-метод.
-
Задайте тело запроса: укажите передаваемые параметры в формате JSON. Чтобы добавить в тело запроса данные из формы, используйте переменные.
-
Добавьте в запрос заголовки. Для каждого заголовка укажите имя и значение.
-
В качестве значений заголовков можно использовать переменные. В этом случае включите опцию Передавать, если значение задано.
-
-
-
Нажмите кнопку Сохранить.
Пример: создать проект в Yandex Tracker с заданным названием и ключом очереди.
Создайте запрос к API Tracker, заполнив форму следующим образом:
URL —
https://api.tracker.yandex.net/v2/projects
.Метод запроса —
POST
.Тело запроса — параметры проекта в формате JSON:
{ "name": "Название проекта", "queues": "<ключ_очереди>" }
Заголовки:
Authorization
—OAuth <OAuth-токен>
;
X-Org-ID: <идентификатор_организации>
илиX-Cloud-Org-ID: <идентификатор_организации>
Если у вас только организация Yandex Cloud Organization, используйте заголовокX-Cloud-Org-ID
, если только Яндекс 360 для бизнеса или оба типа организаций —X-Org-ID
.
Обработка ответов на HTTP-запросы заданным методом
Успешный запрос
Запрос считается успешным, если получен ответ с кодом 200
, 201
или 202
.
Обработка ошибок
При возникновении следующих ошибок запрос будет отправлен повторно (до 7 попыток в течение 30 минут):
-
Истечение таймаута (5 секунд).
-
Сетевая ошибка.
-
Ответ с кодом
5XX
. -
Ответ с кодом
404
.
Все другие ошибки приводят к неуспешному завершению интеграции.
Редирект
Если получен ответ с кодом 307
, то запрос будет перенаправлен на URL, указанный в заголовке Location
.
Обработка ответов на запрос JSON-RPC POST
Успешный запрос
Запрос считается успешным при отсутствии перечисленных ниже ошибок.
Редирект
Если получен ответ с кодом 307
, то запрос будет перенаправлен на URL, указанный в заголовке Location
.
Обработка ошибок
Обработка ошибок происходит в следующем порядке:
-
Если ответ не получен из-за сетевой ошибки или по истечении таймаута, запрос будет отправлен повторно.
-
Проверяется тело ответа. Если тело ответа содержит ошибку, запрос будет отправлен повторно при любом коде ошибки, кроме:
-
-32700
Parse error -
-32600
Invalid Request -
-32602
Invalid params
-
-
Если тело ответа не содержит ошибок, проверяется код состояния HTTP. Запрос будет отправлен повторно при кодах состояния
5XX
и404
.
Все другие ошибки приводят к неуспешному завершению интеграции.
Решение проблем
На один ответ в форме отправляется два HTTP-запроса
В некоторых случаях модуль отправки HTTP-запросов может не дождаться ответа от внешнего сервиса о том, что запрос принят. В этом случае запрос будет отправлен повторно, и в сервис придет дубликат запроса с теми же данными. Если требуется отслеживать уникальность HTTP-запросов, воспользуйтесь значением заголовка x-delivery-id
.
Ошибка 400 Client Error: Bad request
Если интеграция завершилась ошибкой 400 Client Error: Bad request
, проверьте URL-адрес и тело запроса на опечатки: лишние переносы, неразрывные пробелы, экранирование. Тело запроса должно быть в формате JSON.