Отправить HTTP-запрос

Внимание

Для корректной работы HTTP-запросов разрешите вашему сервису принимать пакеты из сети Форм 2a02:6b8:c00::/40. Иначе файрвол вашего сервиса может блокировать данные, передаваемые формой.

Интеграция работает только с протоколом IPv6. Сервис Яндекс Формы не поддерживает отправку HTTP-запросов с адресов IPv4.

Чтобы передать данные из формы в веб-сервис через API, используйте HTTP-запросы:

  1. Выберите форму и перейдите на вкладку Интеграции.

  2. Выберите группу действий, в которую вы хотите добавить HTTP-запрос, и внизу группы нажмите кнопку с нужным типом запроса:

    Примечание

    Все запросы выполняются асинхронно.

  3. Укажите URL сервиса — адрес узла, предоставляющего API.

  4. Задайте параметры, которые зависят от выбранного типа запроса:

    • Запрос JSON-RPC POST

      • Укажите метод сервиса, в который отправляется запрос.

      • Задайте параметры запроса. Для каждого параметра укажите имя и значение.

      • В качестве значений параметров можно использовать переменные. В этом случае включите опцию Передавать, если значение задано.

    • Запрос заданным методом

      • Выберите HTTP-метод.

      • Задайте тело запроса: укажите передаваемые параметры в формате JSON. Чтобы добавить в тело запроса данные из формы, используйте переменные.

      • Добавьте в запрос заголовки. Для каждого заголовка укажите имя и значение.

      • В качестве значений заголовков можно использовать переменные. В этом случае включите опцию Передавать, если значение задано.

  5. Нажмите Сохранить.

Пример: создать проект в Трекере с заданным названием и ключом очереди.

Создайте запрос к API Трекера, заполнив форму следующим образом:

  • URL — https://api.tracker.yandex.net/v2/projects.

  • Метод запроса — POST.

  • Тело запроса — параметры проекта в формате JSON:

    
        {
           "name": "Название проекта",
           "queues": "<ключ_очереди>"
        }
    
  • Заголовки:

    • Authorization — OAuth <OAuth-токен>;

    • X-Org-ID: <идентификатор_организации>

Обработка ответов на HTTP-запросы заданным методом

Успешный запрос

Запрос считается успешным, если получен ответ с кодом 200, 201 или 202.

Обработка ошибок

При возникновении следующих ошибок запрос будет отправлен повторно (до 7 попыток в течение 30 минут):

  • Истечение таймаута (5 секунд).

  • Сетевая ошибка.

  • Ответ с кодом 5XX.

  • Ответ с кодом 404.

Все другие ошибки приводят к неуспешному завершению интеграции.

Редирект

Если получен ответ с кодом 307, то запрос будет перенаправлен на URL, указанный в заголовке Location.

Обработка ответов на запрос JSON-RPC POST

Успешный запрос

Запрос считается успешным при отсутствии перечисленных ниже ошибок.

Редирект

Если получен ответ с кодом 307, то запрос будет перенаправлен на URL, указанный в заголовке Location.

Обработка ошибок

Обработка ошибок происходит в следующем порядке:

  1. Если ответ не получен из-за сетевой ошибки или по истечении таймаута, запрос будет отправлен повторно.

  2. Проверяется тело ответа. Если тело ответа содержит ошибку, запрос будет отправлен повторно при любом коде ошибки, кроме:

    • -32700 Parse error

    • -32600 Invalid Request

    • -32602 Invalid params

  3. Если тело ответа не содержит ошибок, проверяется код состояния HTTP. Запрос будет отправлен повторно при кодах состояния 5XX и 404.

Все другие ошибки приводят к неуспешному завершению интеграции.

Решение проблем

Чтобы проверить, какие ошибки происходят при выполнении интеграций в вашей форме:

  1. Откройте форму, которой в интеграция не работает или работает неправильно.

  2. Перейдите на вкладку Интеграции и нажмите ссылку Выполненные интеграции.

  3. Проверьте, есть ли в списке сообщения об ошибках при выполнении вашей интеграции.

  4. После устранения проблемы попытайтесь повторно запустить создание задачи.

  5. Если проблему не удалось решить, обратитесь в службу поддержки.

На один ответ в форме отправляется два HTTP-запроса

В некоторых случаях модуль отправки HTTP-запросов может не дождаться ответа от внешнего сервиса о том, что запрос принят. В этом случае запрос будет отправлен повторно, и в сервис придет дубликат запроса с теми же данными. Если требуется отслеживать уникальность HTTP-запросов, воспользуйтесь значением заголовка x-delivery-id.

Из переменных подставляются данные в неверном формате

Если вы добавляете в запрос данные из формы с помощью переменных, в тело запроса могут попасть недопустимые символы и вызвать ошибку интеграции. Чтобы удалить из ответа недопустимые символы или преобразовать формат ответа, настройте фильтры для переменных.

Например, нужно добавить в тело запроса переменную, содержащую ответ на вопрос Длинный текст. Если в тексте ответа будут переводы строки, это вызовет ошибку интеграции. Чтобы избежать ошибки, нужно преобразовать значение переменной в формат JSON.

Для этого при добавлении переменной выберите фильтр JSON.

Ошибка 400 Client Error: Bad request

Если интеграция завершилась ошибкой 400 Client Error: Bad request, проверьте URL-адрес и тело запроса на опечатки: лишние переносы, неразрывные пробелы, экранирование. Тело запроса должно быть в формате JSON.