3.1.2. Приём HTTP-запросов¶
HTTP используется в TDG для работы с графическим (web) интерфейсом и обработки запросов через HTTP API. В данном разделе будет рассмотрено использование HTTP API.
Запросы по протоколу HTTP необходимо направлять по адресу любого
из экземпляров TDG с ролью connector на порт, указанный
в параметре http_port
для данного экземпляра при конфигурации кластера.
В конец адреса после символа /
добавляется указание на тип обрабатываемых запросов:
http
— для JSON;soap
— для XML (SOAP);graphql
— для GraphQL.
В итоге адрес для отправки запроса в TDG должен приобрести вид полноценного
URL адреса, например: http://172.19.0.2:8080/http
.
3.1.2.1. Авторизация¶
Для обработки HTTP-запроса он должен пройти авторизацию, которая осуществляется по токену приложений. Подробнее про получение токена приложений — читайте тут. Токен приложения, сформированный в TDG, необходимо передать в HTTP-заголовке запроса по схеме Authorization: Bearer, где „Authorization“ — имя заголовка, а „Bearer“ — тип токена, например:
Authorization: Bearer ee7fbd80-a9ac-4dcf-8e43-7c98a969c34c
Важно
Токен должен быть сформирован в кластере TDG, к которому осуществляется доступ, иначе он не пройдет авторизацию. Кроме того, ему должны быть выданы соответствующие права для выполнения операций чтения и записи с объектами (агрегатами) модели данных.
3.1.2.2. Обработка запросов¶
Обработка поступающих запросов описывается в основном файле конфигурации системы.
В разделе connector
/input
указываются каналы, по которым могут
поступать входящие запросы (за исключением GraphQL-запросов, которые обрабатываются,
даже если не указаны в файле конфигурации, при условии успешной авторизации по токену
приложений). Дальнейшая обработка поступивших запросов выполняется в соответствии
с конфигурацией, указанной в этом же файле.
3.1.2.3. Отправка запросов¶
Для отправки запроса в TDG по протоколу HTTP может быть использовано
любое средство, включая даже сам TDG. Для простоты демонстрации далее
мы используем интерпретатор Python версии 3 с библиотекой requests
или программу
curl
в качестве альтернативного варианта.
Для отправки запроса, в примерах на языке Python вызовите интерпретатор языка Python версии 3 или выше, указав ему на файл скрипта с запросом:
python ./request.py
Примечание
Этот файл должен содержать код отправки HTTP-запроса в TDG. Подробнее в соответствующих разделах для JSON и XML.
В результате выполнения скрипта вы не увидите никаких сообщений об успешном или неуспешном выполнении запроса. Это связано с тем, что в скрипте не предусмотрено подобных проверок и вывода диагностических сообщений (например возвращенного ответа на запрос).
В результате успешного выполнения JSON и XML запросов возвращается только HTTP status code
200
(OK). Это означает только то, что запрос прошёл авторизацию и первичную валидацию.
В случае неудачной авторизации с использованием токена приложений в ответе вернется ошибка, а в журнале аудита появится соответствующая запись.
В случае успешной авторизации, но неуспешной обработки запроса — данный запрос попадает в ремонтную очередь.
Получение результатов обработки данных в ответе на JSON или XML запрос невозможно (в отличии от GraphQL).
Проверить факт выполнения вышеуказанного запроса можно, убедившись в достижении результата.
В нашем случае для этого убедитесь в том, что в TDG была добавлена запись
типа User
с id
равным 1 и username
— Alex. Наиболее простой способ сделать
это — выполнить GraphQL-запрос.