Liferay 7.0自定义表单数据的REST调用访问方法问询
在Liferay 7.0中通过REST访问自定义表单数据的方案
当然可以直接通过REST调用来访问Liferay 7.0里的自定义表单数据,完全不需要额外构建Spring相关组件!下面给你详细拆解实现步骤:
一、确认Liferay自带的REST API支持
Liferay 7.0已经内置了Headless Delivery API,其中包含了专门用于操作表单及表单提交数据的端点,足以满足你按日期范围查询表单数据的需求。
二、具体操作步骤
1. 先完成API认证
访问Liferay的REST接口需要权限验证,常用的方式是获取OAuth2访问令牌(生产环境推荐),测试环境也可以临时用Basic Auth。
比如用curl命令获取OAuth2令牌:
curl -X POST -u "YOUR_CLIENT_ID:YOUR_CLIENT_SECRET" "http://your-liferay-domain/o/oauth2/token" -d "grant_type=password&username=your-admin-account&password=your-password"
执行后会返回包含access_token的JSON,后续请求都要带上这个令牌。
2. 获取目标表单的ID(formInstanceId)
你需要先拿到名为"applications"的表单的实例ID,有两种方式:
- 直接在Liferay控制面板的表单管理页面,找到该表单后查看详情获取ID;
- 或者通过REST端点查询所有表单实例:
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" "http://your-liferay-domain/o/headless-delivery/v1.0/forms"
返回的结果里会包含每个表单的id字段,也就是我们需要的formInstanceId。
3. 按日期范围查询表单提交数据
拿到表单ID后,就可以调用表单提交数据的查询接口,通过filter参数筛选特定日期范围的记录:
情况1:按系统记录的提交时间筛选
如果是要筛选表单的提交时间(Liferay自动记录的dateCreated字段)在指定范围内的数据,请求命令如下:
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" "http://your-liferay-domain/o/headless-delivery/v1.0/forms/{formInstanceId}/form-submissions?filter=dateCreated ge '2017-03-01' and dateCreated le '2017-03-10'"
情况2:按用户提交的date字段筛选
如果是要筛选用户在表单里填写的date字段值在指定范围内的数据,调整filter参数即可:
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" "http://your-liferay-domain/o/headless-delivery/v1.0/forms/{formInstanceId}/form-submissions?filter=fields/date ge '2017-03-01' and fields/date le '2017-03-10'"
三、特殊场景的补充说明
如果自带的Headless API无法满足你的复杂业务需求(比如自定义数据转换、特殊权限控制),再考虑通过Liferay的OSGi组件结合Spring MVC来开发自定义REST端点,但绝大多数场景下,内置的API已经足够解决问题。
内容的提问来源于stack exchange,提问作者TechCrap
相关产品推荐
相关产品推荐

