---
pkg: '@nocobase/plugin-workflow-request'
---

# HTTP-запрос

## Введение

Когда вам нужно взаимодействовать с другой веб-системой, вы можете использовать узел HTTP-запроса. При выполнении этот узел отправляет HTTP-запрос на указанный адрес в соответствии со своей конфигурацией. Он может передавать данные в формате JSON или `application/x-www-form-urlencoded` для взаимодействия с внешними системами.

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

## Установка

Это встроенный плагин, установка не требуется.

## Создание узла

В интерфейсе настройки рабочего процесса нажмите кнопку с плюсом («+») в потоке, чтобы добавить узел «HTTP-запрос»:

![HTTP-запрос_Добавить](https://static-docs.nocobase.com/46f2a6fc3f6869c80f8fbd362a54e644.png)

## Настройка узла

![Узел HTTP-запроса_Настройка](https://static-docs.nocobase.com/2fcb29af66b892fa704add52e2974a52.png)

### Метод запроса

Доступные методы HTTP-запросов: `GET`, `POST`, `PUT`, `PATCH` и `DELETE`.

### URL-адрес запроса

URL-адрес HTTP-сервиса, который должен включать часть протокола (`http://` или `https://`). Рекомендуется использовать `https://`.

### Формат данных запроса

Это заголовок `Content-Type` в запросе. Поддерживаемые форматы см. в разделе «[Тело запроса](#request-body)».

### Настройка заголовков запроса

Пары «ключ-значение» для секции заголовков запроса. Значения могут использовать переменные из контекста рабочего процесса.

:::info{title=Подсказка}
Заголовок запроса `Content-Type` настраивается через формат данных запроса. Нет необходимости заполнять его здесь, и любое переопределение будет неэффективным.
:::

### Параметры запроса

Пары «ключ-значение» для секции параметров запроса (query). Значения могут использовать переменные из контекста рабочего процесса.

### Тело запроса

Часть Body (тело) запроса. Поддерживаются различные форматы в зависимости от выбранного `Content-Type`.

#### `application/json`

Поддерживает текст в стандартном формате JSON. Вы можете вставлять переменные из контекста рабочего процесса, используя кнопку переменных в правом верхнем углу текстового редактора.

:::info{title=Подсказка}
Переменные должны использоваться внутри JSON-строки, например: `{ "a": "{{$context.data.a}}" }`.
:::

#### `application/x-www-form-urlencoded`

Формат «ключ-значение». Значения могут использовать переменные из контекста рабочего процесса. При наличии переменных они будут разобраны как строковый шаблон и объединены в итоговое строковое значение.

#### `application/xml`

Поддерживает текст в стандартном формате XML. Вы можете вставлять переменные из контекста рабочего процесса, используя кнопку переменных в правом верхнем углу текстового редактора.

#### `multipart/form-data` <Badge>v1.8.0+</Badge>

Поддерживает пары «ключ-значение» для данных формы. Файлы можно загружать, если тип данных установлен как файловый объект. Файлы могут быть выбраны только через переменные из существующих файловых объектов в контексте, например, результаты запроса к файловой коллекции или связанные данные из ассоциированной файловой коллекции.

:::info{title=Подсказка}
При выборе файловых данных убедитесь, что переменная соответствует одному файловому объекту, а не списку файлов (при запросе отношений «один-ко-многим» или «многие-ко-многим» значение поля отношения будет массивом).
:::

### Настройки таймаута

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

### Игнорировать ошибки

Узел запроса считает успешными стандартные HTTP-статусы в диапазоне от `200` до `299` (включительно), все остальные считаются ошибками. Если выбрана опция «Игнорировать неудачные запросы и продолжить рабочий процесс», то последующие узлы рабочего процесса будут выполняться, даже если запрос завершится с ошибкой.

## Использование результата ответа

Результат ответа HTTP-запроса может быть разобран узлом [JSON-запрос](./json-query.md) для использования в последующих узлах.

Начиная с версии `v1.0.0-alpha.16`, три части результата ответа узла запроса могут использоваться как отдельные переменные:

*   Код состояния ответа
*   Заголовки ответа
*   Данные ответа

![Узел HTTP-запроса_Использование результата ответа](https://static-docs.nocobase.com/20240529110610.png)

Код состояния ответа обычно представляет собой стандартный числовой HTTP-статус, например, `200`, `403` и т. д. (предоставляется поставщиком услуги).

Заголовки ответа (Response headers) представлены в формате JSON. Как заголовки, так и данные ответа в формате JSON все еще требуют разбора с помощью узла JSON перед использованием.

## Пример

Например, мы можем использовать узел запроса для интеграции с облачной платформой для отправки SMS-уведомлений. Конфигурация для API отправки SMS, например, от Alibaba Cloud, может выглядеть следующим образом (вам потребуется самостоятельно ознакомиться с документацией конкретного API для адаптации параметров):

![Узел HTTP-запроса_Настройка](https://static-docs.nocobase.com/20240515124004.png)

Когда рабочий процесс активирует выполнение этого узла, он вызовет SMS API Alibaba Cloud с настроенным содержимым. В случае успешного запроса SMS будет отправлено через облачный SMS-сервис.