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

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

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

Схема процесса интеграции

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

Добавление нового элемента проекта

Выбор элемента проекта «HTTP-сервис»

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

Новый HTTP-сервис в структуре проекта

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

Корневой URL в панели свойств

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

Добавление шаблона

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

Новый шаблон HTTP-сервиса

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

Создание метода для шаблона

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

Задание имени метода POST

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

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

Добавление обработчика для метода

Откроется модуль 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 "{'Тема сообщения': 'Тело сообщения'}"