自定义请求
1. 简介
1.1 功能简介
自定义请求是指,基于现成的商业接口进行自定义配置,或根据自身需求封装接口,灵活地满足自身业务需求,从而实现接口取数、数据验证、数据分析、触发事件等一系列的操作。
1.2 应用场景
在阿里云/百度云等平台购买接口后,在简道云中使用接口时,需要通过前端事件中的自定义请求方法进行配置。
1.3 预期效果
以查询物流信息为例,自定义请求配置成功后效果如下所示:
2. 设置步骤
2.1 设置入口
在「前端事件 >> 执行动作」处的下拉框中选择「自定义请求」:
2.2 配置内容
2.2.1 请求类型
当触发字段值发生改变时,会自动触发 HTTP 请求,目前支持以下两种类型的请求:
- GET 请求:用于获取服务端数据,将参数 (Query or Params) 在 URL 后面拼接,例如: ?code=123
- POST 请求:用于发送、提交,可以向指定的资源提交要被处理的数据。
2.2.2 URL
1)URL 是请求的服务器地址。当使用 GET 请求时,需要把参数放在 URL 中,同时可以插入字段给参数赋值。
2)URL 地址中,支持插入的字段以及对应的解析值格式如下:
字段名称 | 解析值格式 |
单行文本 | 文本 |
数字控件 | 数字 |
单选按钮 | 文本 |
复选框 | 文本(逗号拼接) |
下拉框 | 文本 |
下拉复选框 | 文本(逗号拼接) |
时间日期 | 文本(UTC 格式时间字符串) |
地址 | 地址字符串 |
定位 | 经度/纬度/地址字符串 |
流水号 | 文本 |
成员单选 | 文本(成员编号 username) |
部门单选 | 文本(部门编号 dept_no) |
图片 | 文本(图片 URL)(多文件 URL 拼接方式空格分隔) |
附件 | 文本(附件 URL)(多文件 URL 拼接方式空格分隔) |
手写签名 | 文本(附件 URL)(多文件 URL 拼接方式空格分隔) |
子表单子字段 | 对应控件格式 |
注: URL 长度取决于配置服务器,如果过长将被截断,导致部分数据参数传输失败。
2.2.3 Header/Body
- 当请求类型为「GET」时,仅支持设置 Header 参数;
- 当请求类型为「POST」时,支持设置 Header 和 Body 参数。
两种参数的设置方法如下所示:
1) Header设置
每个 Header 参数设置中,都包含 name 和 Value 的设置。其中,Value 中可以插入表单字段,支持的字段同【3. URL】 处一致。
注:每个自定义请求中最多可添加 50 个 Header 。
2)Body设置
根据调用接口的不同,Body 参数可以设置为 JSON 和 x-www-form-urlencoded 两种格式。
每个 Body 参数设置中,都包含 name 和 Value 的设置。其中,Value 中可以插入表单字段,支持的字段同【3. URL】 处一致。
注:每个自定义请求中最多可添加 50 个 Body 。
2.2.4 返回值格式
返回值支持两种格式:JSON 和 XML,两种返回值格式对应的解析方式如下:
返回值格式 | 解析方式 |
JSON | JSON Path |
XML | XPath |
1)JSON Path
当返回示例如下时:
{
"result": "result的内容",
"testResult": {
"target": "target的内容"
},
"data": [
{
"key": "扎啤",
"value": "2"
},
{
"key": "炸鸡",
"value": "4"
}
],
"array": [
"列表数据1",
"列表数据2",
"列表数据3",
"列表数据4",
"列表数据5"
]
}
对应返回值的 JSON Path 写法如下:
内容 | 写法一 | 写法二 |
“result的内容” | $.result | $[“result”] |
“target的内容” | $.testResult.target | $[“testResult”][“target”] |
“列表数据1” | $.array[0] | $[“array”][0] |
“炸鸡” | $.data[1].key | $[“data”][1][“key”] |
“4” | $.data[1].value | $[“data”][1][“value”] |
注:简道云中的 JSON Path 写法不支持中文。
2)XPath
当返回示例如下时:
<results>
<result>result的内容</result>
<testResult>
<target>target的内容</target>
</testResult>
<data>
<key>扎啤</key>
<value>2</value>
<key>炸鸡</key>
<value>4</value>
</data>
<array>列表数据1列表数据2列表数据3列表数据4列表数据5</array>
</results>
对应返回值的 XPath 写法如下:
内容 | 写法 |
“result的内容” | /results/result/text() |
“target的内容” | /results/testResult/target/text() |
“列表数据1” | /results/array[1]/text() |
“炸鸡” | /results/data[2]/key/text() |
“2” | /results/data[1]/value/text() |
2.2.5 返回值设置
返回值设置是指,将前端事件获取的数据赋值给表单字段。
1)点击返回值设置下方的「点击设置」:
2)点击「表单字段及对应返回值」,在下拉框中选择需要设置返回值的字段:
3)对返回值字段中配置赋值规则,可以直接赋值,也可以插入表单中的字段进行赋值:
注:返回值的写法由【2.2.4 返回值格式】决定,如果返回值格式为 JSON,需要按 JSON Path 的写法;如果返回值格式为 XML,则需要按 XPath 的写法。
4)支持设置返回值的字段及其对应的解析值格式如下:
字段名称 | 解析值格式 | 说明 |
单行文本 | 文本 | —— |
多行文本 | 长文本 | |
数字 | 数字 | |
时间日期 | 日期时间 | |
单选按钮组 | 文本 | |
复选框组 | 文本数组 | [“选项1”,“选项2”,“选项3”] |
下拉框 | 文本 | —— |
下拉复选框 | 文本数组 | [“选项1”,“选项2”,“选项3”] |
地址 | 地址 json | {“province”:“xx”,“city”:“xx”,“district”:“xx”,“detail”:“xx”} |
子表单字段 | 字段对应格式 | 子表单为触发字段时,只可以返回值字段只能是同一个子表单里面的字段;主表为触发字段时,可以把数组写入子表单,子表单的行数为数组的行数 |
注:返回数据最大仅支持 256 KB
5)子表单填充方式
若在「添加表单字段及对应返回值」处选择了子表单中的字段,则需要同步设置子表单字段的填充方式。目前,简道云支持以下两种子表单字段填充方式:
填充方式 | 说明 |
直接填充到对应子字段 | 前端事件触发后,仅修改当前表对应的子字段的值,不影响其他子字段;重新触发后,从子表单第一行开始替换对应子字段的值。 |
先清空子表单再填充 | 前端事件触发后,先清空子表单中已有的值,再将子字段值填充到对应字段中。 |
以物流信息查询为例,直接填充到对应子字段和先清空子表单再填充的效果如下所示:
- 直接填充到对应子字段:如申通快递有12 行物流信息,而邮政快递包裹有 8 行物流信息。若表单中已经显示了申通快递的 12 行物流信息,此时查询邮政快递包裹后,物流信息进行逐行替换。即仅替换前 8 行物流信息,而后 4 行物流信息依然是申通快递的物流信息。
- 先清空子表单再填充:如申通快递有12 行物流信息,而邮政快递包裹有 8 行物流信息。若表单中已经显示了申通快递的 12 行物流信息,此时查询邮政快递包裹后,物流信息将全部替换,即仅显示邮政快递包裹的 8 行物流信息。