Реализовано в версии 8.3.5.1068.
В дополнение к автоматическому REST интерфейсу прикладного решения мы реализовали возможность создания собственных произвольных HTTP-сервисов в прикладном решении.
Вы самостоятельно, с помощью встроенного языка, можете сформировать ответ на запрос. При этом у вас есть удобный доступ к телу, заголовкам и строке исходного запроса, а также у вас есть возможность формировать код, тело и заголовки ответа по своему усмотрению.
По сравнению с имеющимися в платформе SOAP web-сервисами, HTTP-сервисы имеют ряд преимуществ:
Первые три фактора особенно важны для приложений, работающих на мобильных устройствах.
Вы можете использовать HTTP-сервисы как «легкие» RPC-сервисы, не требующие сложной подготовки XML-пакетов. Методы могут идентифицироваться в URL, а параметры могут передаваться в опциях запроса, или в его теле. В последнем случае такие сервисы уже вплотную приближаются как SOAP, проигрывая ему в четкости спецификации, но выигрывая в гибкости.
По своему «конструктивному исполнению» HTTP-сервисы очень напоминают web-сервисы, имеющиеся в платформе. Точно так же есть специальный объект конфигурации HTTP сервис. Такие объекты добавляются в ветку Общие - HTTP-сервисы:
Каждый HTTP-сервис может содержать в себе один или несколько шаблонов. Для каждого шаблона вы можете создать один или несколько методов, выполняющих обработку данных:
Шаблон задаёт путь, по которому может происходить обращение к HTTP-сервису. В шаблоне вы можете использовать определённый набор символов, в том числе параметризованные сегменты вида {какой-то текст}.
Для каждого метода вы указываете, во-первых, обрабатываемый HTTP метод, а также создаёте процедуру на встроенном языке, которая и будет выполнять обработку данных. В качестве HTTP метода вы можете выбрать один из следующих: GET, POST, PUT, DELETE, PATCH, MERGE, CONNECT, OPTIONS, TRACE, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK. Или указать Любой. В этом случае можно будет использовать любой метод из приведённого списка.
При обращении к такому HTTP-сервису платформа сначала попытается сопоставить URL, по которому произошло обращение, с одним из имеющихся шаблонов и методов. Если сопоставить не удалось, то платформа выдаст код ответ 404 Not Found. Если подходящий метод будет найден, то платформа начнёт выполнение его обработчика, передав в него все имеющиеся в запросе данные в виде объекта встроенного языка HTTPСервисЗапрос:
Из этого объекта вы можете легко получить, например, параметры, содержащиеся в исходном URL, и использовать их для извлечения из базы нужных данных.
Полученные данные вы можете вернуть в разных форматах. Например, их можно преобразовать в XML, как на картинке выше, или даже просто в текстовую строку с разделителями.
Ответ сервиса формируется специальным объектом встроенного языка HTTPСервисОтвет, в тело которого вы можете поместить подготовленные данные.
Публикация HTTP-сервисов выполняется аналогично тому, как публикуются web-сервисы. Также аналогичным образом для них работает аутентификация, использование разделения данных и отладка.