集成流目前支持HTTP请求和返回的同步调用方式触发。该方式在集成流中以HTTP API Listener和HTTP API Reply两个节点的形式表示。在创建集成流时,平台会根据创建时选择的触发方式类型在流中自动创建这两个节点。头尾的两个节点不可删除、不可移动,支持修改内容。
HTTP API Listener
概述
开发过程中:主要用于描述集成流和集成接口之间的绑定关系,如下图所示。集成流和集成接口之间的关系,请参见集成流与集成接口的关系说明。
运行时:主要负责路由和入参校验,将校验通过的请求转换成相应的消息格式并向后续节点传递。
路由和入参校验
引擎在运行时会根据请求的HTTP Request Method和HTTP Requst URL进行匹配,查找对应的元数据进行动态处理。
同时,引擎还会根据集成接口定义的入参,对HTTP请求内容进行校验,只有满足条件的请求才能响应执行。如果校验失败,会直接返回错误。
一次请求中同时出现多个校验失败错误时,只会选择报出其中一个错误信息。
错误码信息如下:
错误代码 | HTTP状态码 | Message | 描述 |
I400IP | 400 | Invalid parameter `${ParameterName}` | HTTP请求校验失败 |
示例如下:
集成接口的定义如下,并已经完成与集成流的绑定。
使用curl调用该集成接口,模拟Query参数的类型错误(对应本例中的q1参数),如下图所示。
使用curl调用该集成接口,模拟Body错误(对应本例中不满足对象的JSON Schema定义),如下图所示。
节点输出消息
输出消息的Payload为HttpRequest类型,关于HttpRequest类型说明,请参见HttpRequest。
本文以获取调用集成接口的入参内容为例说明,具体如下。
集成接口的定义如下,并完成与集成流的绑定。
集成流中,将请求参数
q1
保存到消息的变量字段中,设置变量的节点配置如下:
对应的脚本内容如下,可获取到了接口的入参q1的值。
package bwiflu6pwj543473k0;
import com.alibaba.bwif.script.core.StepMessage
import com.alibaba.bwif.script.core.BwifHandler
import com.alibaba.bwif.script.core.protocol.http.HttpRequest
import com.alibaba.bwif.script.core.Entity
class SimpleHandler implements BwifHandler {
@Override
Object handle(StepMessage message) {
HttpRequest req = message.getPayload()
String q1 = req.getQueryParam("q1")
return q1
}
}
HTTP API Reply
概述
您可以在本节点中定义调用集成接口获得的HTTP Response的内容。
节点配置
主要的节点配置信息为HTTP响应信息(Response),相关配置项详细说明如下:
配置项 | 说明 |
HTTP Status Code |
|
Body |
|
Header |
|
Cookie | 为Cookie单独提供的配置,运行时会合并到Response Header中。Cookie相关的操作建议优先在Cookie页签下操作。如果同时在Header页签中配置了“Set-Cookie”,则引擎在处理时不会对Set-Cookie内容进行合并,而是作为多条重复Header方式返回。
|
HTTP响应信息和此集成流绑定的集成接口定义没有直接关系,需要开发者根据接口定义完成返回内容的设计。
使用示例
动态生成Entity对象,作为HTTP Response body的内容。具体示例请参见快速入门HTTP API Reply。
默认Response结构
引擎默认对返回的HTTP Response结构有统一约定,具体如下:
Body部分。由开发者指定,通过HTTP API Reply节点中配置而来。
Header部分。引擎默认会增加如下信息,用于方便排查问题。
Header Key | 举例 | 说明 |
X-Ca-Request-Id | F21D0412-65A4-4312-9305-60C112D019AE | 集成接口会发布到API网关上,此ID为网关自动生成,标识每次请求。 |
X-Bw-Trace-Id | 3F0C6F80-AD22-4427-9151-3D7B1FDAD29D | 集成流引擎生成的TraceID,标识此次调用的唯一ID。 |
X-Bwiaf-Error-Code | X500ER | 集成流引擎返回的错误码,只有报错时会出现。 |
X-Bwiaf-Error-Message | Service Internal Error | 集成流引擎返回的错误码补充描述,只有报错时会出现。 |