云工作流允许通过Operation
状态调用HTTP服务,functionRef.type
固定为HTTP
,actionExecuteMode
可选择RequestComplete
或WaitForTaskToken(仅适用标准工作流)
。
参数配置
HTTP任务的参数配置如下表所示,涵盖必填和可选字段:
参数名称 | 是否必选 | 参数说明 | 示例值 |
---|---|---|---|
url | 是 | 请求的URL地址,必须包含协议部分(如https://),需确保公网可访问,否则调用失败。 | https://www.example.com |
method | 是 | HTTP请求方法,支持GET、POST、PATCH、PUT、DELETE、HEAD。 | GET |
body | 否 | 请求体内容,需要为键值对。 | body: name: xxx |
headers | 否 | HTTP请求头,键值对形式,用于设置如User-Agent 、Authorization 等。 | headers: key1: value1 |
query | 否 | 请求query内容,键值对形式 | query: key1: value1 |
示例代码与解析
提供的示例代码片段如下,展示了一个典型的HTTP集成工作流:
specVersion: "0.8"
version: "1.0"
name: "test"
start: "FetchMyIp"
states:
- name: "FetchMyIp"
type: "Operation"
actions:
- functionRef:
type: "Http"
arguments:
url: "https://www.example.com"
query:
id: "2"
offset: "1"
req_type: "1"
headers:
User-Agent: "apifox"
actionExecuteMode: "RequestComplete"
stateDataFilter:
output: "{ $.Body }"
end: true
代码解析:
type:固定为
Operation
,标识这是一个Operation状态。functionRef.type:固定为
Http
,标识这是一个Http集成。actionExecuteMode:示例使用
RequestComplete
,表示同步执行,等待HTTP响应后继续流程。另支持WaitForTaskToken
模式,用于标准工作流的异步场景。functionRef.arguments:Http请求参数。
返回值说明
HTTP请求的返回结果会被包装为JSON对象,结构如下:
{
"Header": {
"Content-Type": "application/json;charset=UTF-8",
"Access-Control-Allow-Methods": "GET,POST,OPTIONS"
},
"Code": 200,
"Body": "hello world"
}
Header:响应头部信息,如内容类型、允许方法等。
Code:HTTP状态码,如200表示成功,404表示资源未找到。
Body:响应正文,可能是字符串或JSON数据,依服务返回而定。
后续状态可通过json路径(如{ $.Body }
)访问这些字段,用于条件判断或数据处理,详见数据传递文档。
执行模式
云工作流HTTP集成支持两种执行模式,具体如下:
RequestComplete:
定义:发起HTTP调用后,当前任务完成,输出为HTTP服务器的返回数据。
特点:同步执行,适合需要立即获取结果的场景。
适用场景:实时数据获取、API查询。
示例中采用此模式,GET请求后直接结束。
WaitForTaskToken:
定义:发起HTTP调用后,流程暂停,等待外部系统通过回调恢复执行。
特点:异步模式,依赖任务令牌(taskToken)实现回调。
工作原理:调用时,任务令牌通过
{ $Context.taskToken }
获取。外部服务需调用ReportTaskSucceeded
或ReportTaskFailed
接口,携带令牌和状态,触发流程继续。适用场景:需要外部系统异步处理,如审批流程、长任务执行。
注意:用户需确保外部服务支持回调机制,流程挂起期间需监控任务状态。