事件目标(WebAPI)

变更记录
产品版本 | 更新内容 | 更新日期 |
| V6.0.13 | 初始版本 | 2024年6月13日 |
1 简介
1.1 功能介绍
事件触发时,通过调用第三方系统的API服务将事件消息准确传递至第三方系统。
1.2 应用场景
跨系统数据同步、跨系统关联交易等需要将事件消息实时同步到第三方系统的场景。
1.3 系统路径
【集成服务云】→【事件网格】→【事件订阅(事件目标-WebAPI)】
1.4 关键字段/按钮说明
1.4.1 关键字段说明
| 字段名称 | 详细解释 |
| 基本信息 | |
| 目标API | 事件目标需要调用的API,由目标系统提供API服务,可从【WebAPI登记】列表中选择 |
| 目标数据源 | 事件需要触达的目标系统环境 |
| 请求类型 | 目标API的请求类型,根据所选API自动带出 |
| 域名端口 | 目标API的请求域名和端口,根据所选目标数据源自动带出 |
| URI | 目标API的URI地址,根据所选API自动带出 |
| 参数赋值 | |
| 参数名称 | 需要赋值的API请求参数名称,根据所选API自动带出 |
| 参数类型 | API请求参数的类型,根据所选API自动带出 |
| 参数描述 | API请求参数的描述,根据所选API自动带出 |
| 多值 | API请求参数是否多值,根据所选API自动带出 |
| 必填 | API请求参数是否必填,根据所选API自动带出 |
| 参数赋值 | 给API请求参数赋参数值,支持常量值、事件参数变量、函数表达式 |
| 赋值脚本 | 通过脚本代码编写API请求参数的赋值逻辑,主要面向复杂的赋值场景 |
| 请求断言 | |
| 断言脚本 | 通过脚本代码编写API请求结果断言 |
2 主要操作
2.1 配置WebAPI事件目标
前提条件
目标API已经在【事件网格】->【连接资源】->【WebAPI登记】列表中维护,操作指引详见:WebAPI登记
操作步骤
步骤1:选择目标API。
步骤2:检查API带出的目标数据源是否指向目标系统环境,此处可重新选择目标数据源。
步骤3:进行API参数赋值,确保运行时API能正常调用,事件正常传递至事件目标。需要赋值的参数已自动显示在列表,URL参数、请求头、请求体都可能需要赋值,请切换Tab进行检查避免赋值遗漏。
API参数赋值参数赋值、赋值脚本、参数赋值和赋值脚本同时使用。
1)参数赋值:填写列表中“参数赋值”字段,支持录入常量值、事件参数变量、简单的函数表达式。
特别注意:
1、API请求参数中如涉及树形单据体,赋值时建议先赋值父属性再赋值子属性,才能确保正常按行赋值。如果不赋值父属性直接赋值子属性,则只会取某个参数值赋给子属性。
举个例子:被赋值对象 A=[{"a":"xxx","b":"xxx"}],赋值对象 B= [{"c":"x1","d":"y1"},{"c":"x2","d":"y2"}]
【方式一】赋值父属性:A = B,a =c,b = d
赋值结果为:A = [{"a":"x1","b":"y1"},{"a":"x2","b":"y2"}]
【方式二】不赋值父属性:a=c,b =d
赋值结果为:A = [{"a":["x1","x2"],"b":["y1","y2"]}]

2)赋值脚本:对于复杂的赋值场景,如复杂的逻辑运算、调用微服务、调用WebAPI等,可通过编写脚本代码对API请求参数赋值。
脚本可用变量包括事件参数($data)、上下文参数($event)、API请求头参数($header)、API请求体参数($body)、API请求URL参数($queryString)。
脚本直接编写逻辑,对 $header/$body/$queryString 进行赋值即可,无需Return。
注意:脚本中取到$header、$body、$queryString这几个变量时,已包含上面列表参数赋值结果。
运行顺序为 列表参数赋值 > 赋值脚本 > 拿$header、$body、$queryString进行WebAPI调用。
若某个参数同时被列表参数赋值和脚本赋值,脚本中的赋值将覆盖列表参数赋值,最终调用API时采用脚本中的赋值结果。
【参考案例】
某订阅需要调用“销售出库单保存”API接口,若其API请求体中的销售订单单据体使用列表参数赋值完成,但物料分录需要调用另外的“查询物料信息”接口获取。所以拆解赋值脚本中关键步骤包括:
① 调用“获取销售订单明细”API,根据单据号查询完整物料分录。
② 整合返回的物料分录,适配“销售出库单保存”请求体格式。
③ 补充物料分录至请求体$body,确保数据完整准确后执行保存API调用。
赋值脚本如下:
//通过微服务调用WebAPI,获取销售订单物料明细
var number = "getOrderProduct";
var body ={
"data":{
"search_query_info":{
"orders":[
{}
],
"filters":[
{
"field_values":[
//传入事件参数中销售订单ID
事件目标(WebAPI)
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



