3.9.2. Настройка сервисов среднего слоя
Список методов сервисов, доступных для вызова через REST API, должен быть объявлен в приложении в конфигурационных файлах, заданных свойством приложения cuba.rest.servicesConfig. Свойство должно быть определено в модуле web или portal (например, в файле web-app.properties
):
cuba.rest.servicesConfig = +com/company/myapp/rest-services.xml
Файл rest-services.xml
должен находиться в главном пакете модуля web или portal (например, com.company.myapp
). Его содержимое определяется схемой rest-services-v2.xsd, например:
<?xml version="1.0" encoding="UTF-8"?>
<services xmlns="http://schemas.haulmont.com/cuba/rest-services-v2.xsd">
<service name="myapp_SomeService">
<method name="sum">
<param name="number1"/>
<param name="number2"/>
</method>
<method name="emptyMethod"/>
<method name="overloadedMethod">
<param name="intParam" type="int"/>
</method>
<method name="overloadedMethod">
<param name="stringParam" type="java.lang.String"/>
</method>
</service>
</services>
Типы параметров метода могут быть опущены, если сервис не содержит перегруженного метода с тем же количеством аргументов. Иначе типы параметров обязательны к указанию.
Если тип параметра является примитивным типом, то достаточно просто указать имя типа (int
, double
, etc.) в файле конфигурации:
<param name="intParam" type="int"/>
В случае объектов, в том числе и сущностей, указывается полное имя класса:
<param name="stringParam" type="java.lang.String"/>
<param name="entityParam" type="com.company.entity.Order"/>
В случае коллекции объектов указывается тип коллекции:
<param name="entitiesCollectionParam" type="java.util.List"/>
Пример конфигурирования и вызова сервиса можно увидеть в разделах Вызов метода сервиса (GET) и Вызов метода сервиса (POST).
Если необходимо иметь возможность вызова метода сервиса без аутентификации даже при отключенном анонимном доступе к REST API, то можно пометить метод сервиса атрибутом anonymousAllowed="true"
в конфигурационном файле:
<?xml version="1.0" encoding="UTF-8"?>
<services xmlns="http://schemas.haulmont.com/cuba/rest-services-v2.xsd">
<service name="myapp_SomeService">
<method name="sum" anonymousAllowed="true">
<param name="number1"/>
<param name="number2"/>
</method>
</service>
</services>