3.1.2. Приём HTTP-запросов | Tdg

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 и usernameAlex. Наиболее простой способ сделать это — выполнить GraphQL-запрос.

Found what you were looking for?
Feedback