Выполнить HTTP запрос
Описание
Блок выполняет HTTP-запрос к указанному ресурсу и возвращает ответ сервера, заголовки ответа и HTTP-статус. Блок поддерживает методы GET, PUT, POST, DELETE, передачу заголовков, параметров, тела запроса, файлов и аутентификацию.
Описание параметров
Блок имеет ряд параметров:
-
Url - адрес ресурса, к которому выполняется запрос.
Тип данных:
str (Строка)Пример:
https://jsonplaceholder.typicode.com/posts/1 -
Таймаут - максимальное время ожидания ответа от сервера в секундах.
Тип данных:
int (Целое число)Пример:
30 -
Метод - HTTP-метод запроса. Доступные значения:
GET,PUT,POST,DELETE.Тип данных:
dropdown (Выпадающий список)Пример:
GET -
Кодировка - кодировка ответа сервера.
Тип данных:
str (Строка)Пример:
utf-8 -
Аутентификация - данные для авторизации на стороне сервера.
Тип данных:
list (Список)Пример:
['login', 'password'] -
Тип аутентификации - способ авторизации. Доступные значения:
Basic,Digest,OAuth 1.Тип данных:
dropdown (Выпадающий список)Пример:
Basic -
Заголовки - словарь HTTP-заголовков запроса.
Тип данных:
dict (Словарь)Пример:
{"Content-Type": "application/json"} -
Параметры - словарь query-параметров запроса.
Тип данных:
dict (Словарь)Пример:
{"userId": 1} -
Данные - тело запроса. Для JSON-запросов передаются как JSON, для остальных типов - как данные формы или строка.
Тип данных:
dict | str (Словарь | Строка)Пример:
{"title": "Новая запись"} -
Файлы - файлы для отправки multipart-запросом.
Тип данных:
dict (Словарь)Пример:
{"file": open("C:\\\\Temp\\\\report.pdf", "rb")}
Возвращаемое значение
Блок возвращает список из трех элементов:
-
Ответ сервера - тело ответа. Если сервер вернул JSON, будет получен словарь или список. Если сервер вернул PDF, будет получен бинарный контент. В остальных случаях возвращается строка.
Тип данных:
list[0]: dict | list | bytes | strПример:
{"id": 1, "title": "delectus aut autem"} -
Заголовки ответа - словарь заголовков ответа сервера.
Тип данных:
list[1]: dict (Словарь)Пример:
{"Content-Type": "application/json; charset=utf-8"} -
Код ответа - HTTP-статус ответа сервера.
Тип данных:
list[2]: int (Целое число)Пример:
200
Пример использования
В данном примере блок выполняет HTTP-запрос на создание коммита в проекте GitLab:
- Переменной headers присваивается словарь с заголовками запроса;
- Переменной data присваивается словарь с данными HTTP-запроса;
- Блок выполняет HTTP-запрос
POSTна создание нового коммита в проекте GitLab. Из документации на странице https://docs.gitlab.com/ee/api/commits.html, запрос имеет вид:
PAYLOAD=$(cat << 'JSON'{ "branch": "master", "commit_message": "some commit message", "actions": [ { "action": "create", "file_path": "foo/bar", "content": "some content" } ]}JSON)curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" \ --data "$PAYLOAD" "https://gitlab.example.com/api/v4/projects/1/repository/commits"- Переменной response присваивается ответ от сервера в виде массива, содержащего: ответ от сервера, заголовки ответа и код ответа.
Пример ответа от сервера:
[{'id': '12345678900987654321', 'short_id': 'e23d55g2','created_at': '2023-09-01T11:05:11.000+00:00','parent_ids': ['f123f123t123t123t123tre01'],'title': 'Puzzle RPA commit', 'message': 'Puzzle RPA commit','author_name': 'Иван Иванов', 'author_email': 'i.ivanov@test.ru','authored_date': '2023-09-01T11:05:11.000+00:00', 'committer_name': 'Иван Иванов','committer_email': 'i.ivanov@test.ru','committed_date': '2023-09-01T11:05:11.000+00:00','trailers': {},'web_url': 'https://gitlab.puzzle_rpa.ru/i.ivanov/puzzle_rpa_test/-/commit/12345678900987654321','stats': {'additions': 1, 'deletions': 0, 'total': 1}, 'status': None,'project_id': 1, 'last_pipeline': None},{'Server': 'test', 'Date': 'Fri, 01 Sep 2023 11:05:12 GMT','Content-Type': 'application/json', 'Content-Length': '732','Connection': 'keep-alive', 'Cache-Control': 'max-age=0, private,must-revalidate', 'Etag': 'W/"12345678900987654321"', 'Vary': 'Origin','X-Content-Type-Options': 'nosniff', 'X-Frame-Options': 'SAMEORIGIN','X-Request-Id': '01Request123Id', 'X-Runtime': '0.262695','Strict-Transport-Security': 'max-age=63072000','Referrer-Policy': 'strict-origin-when-cross-origin'},201]- Из ответа переменной commits_ID присваивается ID созданного коммита;
- Выполняется HTTP-запрос
GETна получение информации о созданном коммите. Из документации на странице https://docs.gitlab.com/ee/api/commits.html, запрос имеет вид:
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" \ "https://gitlab.example.com/api/v4/projects/1/repository/commits/commits_ID"- Результат ответа сохраняется в файл JSON.

Результат
Созданный коммит на GitLab:
В данном примере выполняется набор HTTP-запросов для публикации записи на стене сообщества во ВКонтакте. Запись содержит текст и изображение.
- Первый запрос (
GET) позволяет получить информацию по серверу, на который будет загружено вложение. В Заголовках указывается токен, в Параметрах - id сообщества и версия API; - Второй и третий запросы (
POST) загружают вложение на сервер. Во втором запросе в Файлах указывается информация по загружаемому фото, в третьем запросе в Заголовках задается токен и тип контента, в Параметрах - id сообщества, фото, сервер, хэш и версия API; - Четвертый запрос (
POST) публикует запись на стене ВКонтакте. В Данных задается токен, id сообщества, сообщение, вложение и версия API.




Результат
Опубликованный пост на стене сообщества во ВКонтакте: