Создание и редактирование элемента «Http Сервис»
HTTP-сервис позволяет «1С:Шине» обрабатывать входящие HTTP-запросы, поступающие от внешних информационных систем. Например, процесс интеграции может быть настроен следующим образом: внешняя система отправляет сообщение по протоколу HTTP в «1С:Шину», после чего в HTTP-сервисе вызывается обработчик, который данное сообщение обрабатывает и передает дальше в программный источник. Сама схема процесса интеграции может выглядеть следующим образом:
Чтобы создать новый HTTP-сервис, можно кликнуть правой кнопкой мыши на подсистему Основной и затем выбрать :
После чего задайте имя Http Сервиса и нажмите Ввод:
В структуре проекта отобразится новый HTTP-сервис:
В Свойствах HTTP-сервиса следует задать Корневой URL:
Затем следует создать шаблон URL. Для этого правой кнопкой мыши нажмите на вкладку Шаблоны, после чего выберите :
Задайте имя шаблона и нажмите Ввод. Созданный вами шаблон отобразится во вкладке Шаблоны:
Следующим шагом следует создать HTTP-метод, который будет использоваться при обращении к 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 "{'Тема сообщения': 'Тело сообщения'}"