业务背景

服务填值控件能力的不断提升,对Restful Adapter (webapi 适配)的业务方法提出了新的要求,首先restful webapi接口参数通过映射到表单字段取值;其次restful webapi接口请求的结果可以作为数据源,对服务填值控件自身以及包括子表等被映射的其他控件填值;再者必须满足webapi接口入参和出参的多样性要求

业务需求

原理

image.png

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} ,输入参数配置如下:

企业微信截图_15731936363291.png

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。
企业微信截图_15732008367043.png

该POST接口body类型入参名为param, 是一个包含param1,param2的对象,于是我们定义param1和param2参数位置为Body。

企业微信截图_15731994579106.png

设置输出参数

例如: 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资源与环境科学学院测绘地理信息系统硕士研究生”,
} ..]
}
}
企业微信截图_15731963203170.png


实现步骤

以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. 添加业务方法

  1. <br />按照需求创建应用功能,将输入参数和输出参数要映射和绑定到表单字段设计好。如图所示:
  2. ![企业微信截图_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(常量)

输入参数的绑定如下图所示:

企业微信截图_15732049214711.png

输出参数的映射

借助于服务赋值控件,实现对服务成功调用的结果赋值到与输出参数绑定了的表单字段(包含子表)。

企业微信截图_15732053709222.png

3. 绑定服务填值控件

打开表单设计选择表单赋值控件,选择表单赋值控件的服务接口,设置表单赋值控件显示列,设置触发服务接口调用时输入值字符的长度,保存表单。

企业微信截图_15732057463590.png