业务背景
服务填值控件能力的不断提升,对Restful Adapter (webapi 适配)的业务方法提出了新的要求,首先restful webapi接口参数通过映射到表单字段取值;其次restful webapi接口请求的结果可以作为数据源,对服务填值控件自身以及包括子表等被映射的其他控件填值;再者必须满足webapi接口入参和出参的多样性要求。
业务需求
原理
URL
支持按照Restful请求查询字符串Query,路由参数ParameterPath。
Header
HTTP协议消息头,HTTP消息头用来准确描述正在获取的资源、服务器或者客户端的行为,定义了HTTP事务中的具体操作参数。
例如:
- Authorization: 用于表示HTTP协议中需要认证资源的认证信息。
- UserId: 用户自定义Header, 用于记录当前请求人员用户ID。
Body
HTTP请求和回复报文中的内容(报文体),出现在HTTP POST 请求(request),和其他HTTP方法的回复(response)报文中。Webapi请求接口将复杂类型的输入参数放在HTTP请求报文的Body中。
输入输出参数
设置输入参数
GET接口
HTTP GET 请求的输入参数,参数位置类型有(ParameterPath、Head、Query);
例如: http://api.beisenapp.com/RecruitV2/105772/Applicant/ById/571347227?language=1&photo_base64=1&has_Long=1
其中None类型针对于历史数据,URL的原型http://api.beisenapp.com/RecruitV2/105772/Applicant/ById/{Id}?language={language}&photo_base64={photo_base64}&has_Long={has_Long} ,输入参数配置如下:
POST接口
HTTP POST 请求的输入参数,参数类型有(ParameterPath、Head、Query、Body);
例如:http://localhost:5000/api/Test/TestApi/{code}/{code2}?query={query}&query2={query2}
其中,Body参数位置的输入参数有param1、param2;UserId 为用户自定义HTTP 请求报文头部。
Body参数位置对于输入参数的设置,取决Webapi POST接口FromBody 类型的入参,本接口对应的入参可以参照Swagger, http://localhost:5000/swagger。
该POST接口body类型入参名为param, 是一个包含param1,param2的对象,于是我们定义param1和param2参数位置为Body。
设置输出参数
例如: http://api.beisenapp.com/RecruitV2/105772/Applicant/ById/571347227?language=1 &photo_base64=1&has_Long=1
该接口返回数据:[
{
“ApplicantId“: 571347227, ———————————> 主表字段ApplicantId 路径当前为空
“CadidateId“: “C00033989”, ———————————> 主表字段CadidateId 路径当前为空
“ApplyJobSummaries”: [.. ],
“InterviewSummaries”: [.. ],
“EducationExperience“: {
“Description”: null,
“Items“: [ ———————> 子表字段Items, 路径EducationExperience
{
“StartTime“: “2013-09-01”, ———————> 子表成员StartTime, 路径为子表当前, 默认空
“EndTime“: “2015-07-01”, ———————> 子表成员EndTime, 路径为子表当前, 默认空
“SchoolName“: “武汉大学”, ——————-> 子表成员SchoolName, 路径为子表当前, 默认空
“MajorName“: null, ——————-> 子表成员MajorName, 路径为子表当前, 默认空
“EducationLevel”: {
“Value”: 2,
“ExtendValue“: “硕士研究生” ——> 子表成员ExtendValue, 路径为子表EducationLevel
},
“Description”: “\r\n资源与环境科学学院测绘地理信息系统硕士研究生”,
} ..]
}
}
实现步骤
以HTTP GET 接口 http://api.beisenapp.com/RecruitV2/105772/Applicant/ById/{Id}?language={language}&photo_base64={photo_base64}&has_Long={has_Long}为例:
1. 添加业务服务
进入后台管理,点击业务集成,添加业务服务,适配器对应“RESTful Adapter”,HttpMethod对应“HttpGet”,填写URL为“http://api.beisenapp.com/RecruitV2/105772/Applicant/ById/{Id}?language={language}&photo_base64={photo_base64}&has_Long={has_Long}”,其中ParameterPath、Query类型的参数可以通过{Id},{language}占位,认证Token根据接口需求填写,输入输出参数按上一章节填写。
2. 添加业务方法
<br />按照需求创建应用功能,将输入参数和输出参数要映射和绑定到表单字段设计好。如图所示:
![企业微信截图_15732063809780.png](https://cdn.nlark.com/yuque/0/2019/png/346703/1573206389525-2eee4a1f-ef49-4997-ab32-cc84af09e26d.png#height=367&id=RPX7a&name=%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_15732063809780.png&originHeight=367&originWidth=234&originalType=binary&ratio=1&size=7523&status=done&style=stroke&width=234)<br /> <br />打开高级设计->业务方法,添加业务方法,填写方法名称、显示名称。<br />![企业微信截图_15732043713277.png](https://cdn.nlark.com/yuque/0/2019/png/346703/1573204376963-66543f86-39e2-4075-b073-afefd4f5f487.png#height=303&id=wMrK9&name=%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_15732043713277.png&originHeight=303&originWidth=492&originalType=binary&ratio=1&size=6825&status=done&style=stroke&width=492)
输入参数的映射
编辑业务方法与服务映射列表,设置输入参数映射对象,实现了服务输入参数和表单字段的关联关系,被输入参数映射的表单字段将作为服务的入参值,映射方式有以下两种:
- Property (表单字段)
- Const(常量)
输入参数的绑定如下图所示:
输出参数的映射
借助于服务赋值控件,实现对服务成功调用的结果赋值到与输出参数绑定了的表单字段(包含子表)。
3. 绑定服务填值控件
打开表单设计选择表单赋值控件,选择表单赋值控件的服务接口,设置表单赋值控件显示列,设置触发服务接口调用时输入值字符的长度,保存表单。