Перейти к основному содержимому

Создание и редактирование элемента «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-сервиса, в котором автоматически будет создан метод с нужной сигнатурой. Данный метод будет автоматически назначен в качестве обработчика события. Впишите в тело метода следующий код:

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

Имя для созданного системой обработчика также генерируется автоматически. Так, в примере выше, обработчику было присвоено имя messagesPOSTОбработкаЗапроса, которое состоит из следующих частей:

  • messages + POST + ОбработкаЗапроса

Для автоматической генерации имени использовалась следующая схема:

  • ИмяШаблона + ИмяМетода + «ОбработкаЗапроса»

Для генерации других типов обработчиков запросов используются следующие схемы:

В Свойствах 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 "{'Тема сообщения': 'Тело сообщения'}"