Создание и редактирование элемента «Http Сервис»

HTTP-сервис позволяет «1С:Шине» обрабатывать входящие HTTP-запросы, поступающие от внешних информационных систем. Например, процесс интеграции может быть настроен следующим образом: внешняя система отправляет сообщение по протоколу HTTP в «1С:Шину», после чего в HTTP-сервисе вызывается обработчик, который данное сообщение обрабатывает и передает дальше в программный источник. Сама схема процесса интеграции может выглядеть следующим образом:

Чтобы создать новый HTTP-сервис, можно кликнуть правой кнопкой мыши на подсистему Основной и затем выбрать Новый > Элемент Проекта > Http Сервис:

После чего задайте имя Http Сервиса и нажмите Ввод:

В структуре проекта отобразится новый HTTP-сервис:

В Свойствах HTTP-сервиса следует задать Корневой URL:

Затем следует создать шаблон URL. Для этого правой кнопкой мыши нажмите на вкладку Шаблоны, после чего выберите Новый > Шаблон URL HTTP Сервиса:

Задайте имя шаблона и нажмите Ввод. Созданный вами шаблон отобразится во вкладке Шаблоны:

Следующим шагом следует создать HTTP-метод, который будет использоваться при обращении к HTTP-шаблону. Для этого правой кнопкой мыши кликните на созданный шаблон и выберите Новый > Метод шаблона URL HTTP Сервиса:

Так как для передачи сообщения в «1С:Шину» будет использоваться метод POST, назовите его POST и нажмите Ввод:

При POST-запросе по URL-шаблону messages будет выполняться специальный метод, прописанный в обработчике метода POST. В данном примере рассмотрим код, который будет принимать на вход сообщение из запроса, отправленного в HTTP-сервис «1С:Шины», и затем отправлять его в следующий узел — Програмный Источник.

Чтобы добавить обработчик, в свойствах Метода шаблона URL HTTP Сервиса, в поле Обработчик, нажмите на значок лупы:

Откроется модуль HTTP-сервиса, в котором автоматически будет создан метод с нужной сигнатурой. Данный метод будет автоматически назначен в качестве обработчика события. Впишите в тело метода следующий код:

метод ОбработкаЗапроса(Запрос: HttpСервисЗапрос)
    знч ЯвляетсяАрхивом = Запрос.Заголовки.ПолучитьПервый("content-type") == "application/zip"
    знч Сообщение = новый СообщениеИнтеграции({"IsArchive":ЯвляетсяАрхивом}, Запрос.Тело)
    ОбменТиповой.ОтправитьСообщениеВУзлы(Сообщение, ОбменТиповой.Схема.Узлы.ПрограммныйИсточник)
;

В Свойствах HTTP-сервиса, в поле Контроль доступа, также есть возможность настроить пользователей, для которых будет доступен вызов этого сервиса:

Чтобы отправить запрос к HTTP-сервису, следует использовать следующий шаблон:

{адрес-сервера-шины}/applications/{имя-приложения}/api/{корневой-url}/{url-шаблон}

К HTTP-сервису, созданному в примере, можно обратиться следующим способом:

http://127.0.0.1:9090/applications/PrimerIntegratsiiSistem-dev/api/esb/messages

Пример POST-запроса для авторизованной информационной системы с сообщением в теле запроса:

curl -X POST 
      http://127.0.0.1:9090/applications/PrimerIntegratsiiSistem-dev/api/esb/messages \
     -H "authorization: Bearer БИЛЕТ" \
     -H "Content-Type: application/json" \
     -d "{'Тема сообщения': 'Тело сообщения'}"