4.2. 服务配置
Service 中可以通过 REST API 访问的方法需要写在配置文件中。这些配置文件需要通过 web 或者 portal 模块的 cuba.rest.servicesConfig 应用程序属性来指定,比如在 web-app.properties
文件中:
cuba.rest.servicesConfig = +com/company/myapp/rest-services.xml
rest-services.xml
文件需要放在 web 或者 portal 模块的根目录(比如 com.company.myapp
)。文件内容格式是由 rest-services-v2.xsd shema 来定义,示例:
<?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
等):
<param name="intParam" type="int"/>
如果参数类型是对象或者实体,则需要用完全限定名称(包含路径和类名)作为参数类型:
<param name="stringParam" type="java.lang.String"/>
<param name="entityParam" type="com.company.entity.Order"/>
如果是实体集合或者 POJO 集合,则使用集合类型:
<param name="entitiesCollectionParam" type="java.util.List"/>
关于配置和调用服务的示例可以参考 调用服务方法(GET) 和 调用服务方法(POST) 章节。
如果某些服务的方法需要在 匿名访问 被禁用的情况下进行无认证访问,那么可以在服务配置文件中给这个方法单独添加 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>