HTTP客户端
restApiCall
组件:调用rest api客户端。调用外部REST服务。msg.Data会填充到body后请求REST服务,请求返回值会回填到msg.Data。
# 配置
字段 | 类型 | 说明 | 默认值 |
---|---|---|---|
restEndpointUrlPattern | string | HTTP URL地址,可以使用组件配置变量 | 无 |
requestMethod | string | 请求方法 | POST |
withoutRequestBody | bool | 不把消息负荷传输给配置的服务地址 | false |
headers | map | 请求头,可以使用组件配置变量 | "Content-Type": "application/json" |
readTimeoutMs | int | 超时,单位毫秒 | 2000 |
maxParallelRequestsCount | int | 最大并发大小 | 200 |
enableProxy | bool | 是否开启代理 | false |
useSystemProxyProperties | bool | 是否使用系统配置代理 | false |
proxyHost | string | 代理主机 | 无 |
proxyPort | int | 代理端口 | 无 |
proxyUser | string | 代理用户名 | 无 |
proxyPassword | string | 代理密码 | 无 |
proxyScheme | string | 代理协议 | 无 |
占位符
restEndpointUrlPattern
和headers
支持使用${metaKeyName} 方式替换metadata数据。(注意:${}
内不能出现空格)
# Relation Type
- Success: 执行成功,把消息发送到
Success
链 - Failure: 执行失败,把消息发送到
Failure
链
# 执行结果
- 执行成功:http 响应body数据,代替到msg.Data,流转到下一个节点
- msg.Metadata.status:保存响应码。
- msg.Metadata.statusCode:保存响应码。
- 执行失败:
- msg.Metadata.status:保存响应码。
- msg.Metadata.statusCode:保存响应码。
- msg.Metadata.errorBody:响应错误信息。
# 配置示例
{
"id": "s1",
"type": "restApiCall",
"name": "推送数据",
"configuration": {
"restEndpointUrlPattern": "http://192.168.136.26:9099/api/msg",
"requestMethod": "POST",
"maxParallelRequestsCount": 200
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# SSE(Server-Sent Events)流式请求
headers
配置 "Accept":"text/event-stream",会进入SSE流式响应模式。可以通过该方式调用大模型流式API和大模型API集成,如:
{
"id": "s2",
"type": "restApiCall",
"name": "调用restApi",
"configuration": {
"restEndpointUrlPattern": "http://127.0.0.1:8080/sse",
"requestMethod":"POST",
"headers":{"Accept":"text/event-stream"},
"maxParallelRequestsCount": 200
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
SSE的数据结构主要由以下几个部分组成:
- 事件流(Event Stream):事件流是服务器向客户端发送的数据流,每个事件流由若干个消息(Message)组成,每个消息之间用两个换行符(\n\n)分隔。
- 消息(Message):消息是事件流的基本单位,每个消息由若干个字段(Field)组成,每个字段占一行,以冒号(:)分隔字段名和字段值,以换行符(\n)结尾。
- 字段(Field):字段是消息的属性,用于指定事件的类型、数据、标识符、重试间隔等信息。SSE规范定义了四种字段:data、event、id和retry,分别表示事件的数据、类型、标识符和重试间隔。此外,还可以有以冒号(:)开头的注释行,用于发送评论或保持连接。
- 事件(Event):事件是客户端接收到的消息,每个事件有一个类型(Type)和一个数据(Data),以及可选的标识符(ID)和重试间隔(Retry)。
SSE Message和RuleGo Msg的对应关系:
- msg.Metadata.eventType=SSE Message 字段名(对应SSE规范定义的字段类型:data、event、id或者retry)
- msg.Data=Message 字段值
每收到一条SSE消息,会触发把消息发送到Success
链。 直到SSE服务器断开。
# 应用示例
调用rest api。
{
"ruleChain": {
"id":"rule01",
"name": "测试规则链",
"root": true
},
"metadata": {
"nodes": [
{
"id": "s1",
"type": "jsTransform",
"name": "转换",
"configuration": {
"jsScript": "metadata['name']='test02';\n metadata['index']=22;\n msg['addField']='addValue2'; return {'msg':msg,'metadata':metadata,'msgType':msgType};"
}
},
{
"id": "s2",
"type": "restApiCall",
"name": "推送数据",
"configuration": {
"restEndpointUrlPattern": "http://192.168.136.26:9099/api/msg",
"requestMethod": "POST",
"maxParallelRequestsCount": 200
}
}
],
"connections": [
{
"fromId": "s1",
"toId": "s2",
"type": "Success"
}
]
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
在 GitHub 上编辑此页 (opens new window)
上次更新: 2024/10/23, 10:13:01