Top.Mail.Ru
Tdg » 1.6 » 3. Запросы из внешних систем » 3.1. Запросы к данным » 3.1.2. Приём HTTP запросов
 

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

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, необходимо передать в заголовке запроса с ключом auth-token, например:

'auth-token' : '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 запрос.