Пример создания http-сервиса
HTTP-запрос в общем случае имеет вид
Например, http://myserver/mybase/hs/my_servise/v1/ping
.
Запрос может содержать произвольное количество параметров, которые указываются после относительного URL и знака ?
. Параметры передаются парами «Ключ-значение» и имеют вид «myparam=value». Если необходимо передать несколько параметров, они разделяются между собой знаком &
— например: http://myserver/mybase/hs/my_servise/v1/ping?my_param1=10&my_param2=20
Общая схема работы с HTTP:
Создание сервиса
Сначала необходимо опубликовать базу на веб-сервере
Затем в дереве конфигурации по пути Общие — HTTP-сервисы
создаем новый сервис MobileAPI
для обмена с мобильным приложением.
В свойствах сервиса необходимо указать корневой URL, чтобы явно отличать сервисы.
После создания сервиса, необходимо создать шаблоны URL - это то, как будет выглядеть относительный URL.
В свойствах шаблона нужно указать шаблон относительного URL, в который можно добавлять параметры — Конструкции, заключенные в фигурных скобках. С текущими настройками шаблон URL будет выглядеть следующим образом
http://host/base/hs/mobile_uat/v1/{любой метод}
Далее для каждого шаблона необходимо определять методы HTTP. Принято создавать методы на каждый используемый метод HTTP — GET
, POST
, PUT
и т.д., в обработчике которых и будут перехватываться параметры http-запроса
Обработчик http-метода функционирует в контексте СЕРВЕРА
Пример обработчика
Функция uatGET(Запрос)
// то, что мы указывали в параметрах шаблона URL ИмяМетода = Запрос.ПараметрыURL.Получить("ИмяМетода");
Ответ = Неопределено;
// в зависимости от имени метода выбирается обработчик Если ИмяМетода = "ping" Тогда Ответ = РезультатПроверкиСоединения(Запрос); ИначеЕсли ИмяМетода = "my_tasks" Тогда Ответ = СписокТекущихЗаданийВодителя(Запрос); ИначеЕсли ИмяМетода = "task_last_file" Тогда Ответ = ПоследнийПрисоединенныйФайлЗаявки(Запрос); ИначеЕсли ИмяМетода = "task_all_files" Тогда Ответ = СписокПрисоединенныхФайловЗаявки(Запрос); ИначеЕсли ИмяМетода = "file_by_uuid" Тогда Ответ = ПрисоединенныйФайлПоСсылке(Запрос); ИначеЕсли ИмяМетода = "status_list" Тогда Ответ = СписокСтатусовЗаявок(Запрос); ИначеЕсли ИмяМетода = "driver_uuid_by_personal_num" Тогда Ответ = УИДВодителяПоТабельномуНомеру(Запрос); ИначеЕсли ИмяМетода = "all_tasks" Тогда Ответ = СписокВсехЗаявок(Запрос); Иначе Ответ = ОтветНаНеподдерживаемыйМетод(Запрос); КонецЕсли;
Возврат Ответ; // тут всегда должен быть HTTPСервисОтвет
КонецФункции
Пример обработчика метода ping
Функция РезультатПроверкиСоединения(Запрос)
Ответ = Новый HTTPСервисОтвет(200); Ответ.УстановитьТелоИзСтроки("Соединение установлено успешно", КодировкаТекста.UTF8);
Возврат Ответ;
КонецФункции
Важно помнить, что тело ответа в общем случае — это строка, но эта строка может быть сформирована в формате HTML
, XML
, JSON
и пр. Файлы и прочие двоичные данные можно передавать как Base64
строку
Таким образом, при вводе в адресной строке браузера адрес http://host/base/hs/mobile_uat/v1/ping, в браузере отобразится сообщение «Соединение установлено успешно»
Отладка сервиса
Для отладки лучше использовать приложение Postman
Также желательно установить на сервере отладку по HTTP и настроить автоматическое подключение HTTP-сервисов. (Такой выбор появится только при HTTP отладке)
Настройка http-отладки на сервере
-
Вызовите редактор реестра Windows: нажмите
Win + R
и введите командуregedit
. -
В редакторе реестра найдите и раскройте ветку:
-
Для 64-битного сервера:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\1C:Enterprise 8.3 Server Agent (x86-64)
-
Для 32-битного сервера:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\1C:Enterprise 8.3 Server Agent
-
-
Найдите параметр
ImagePath
, откройте его и в конец строки добавьте пробел и флаг–debug -http
.