集成流目前支持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 | 集成流引擎返回的錯誤碼補充描述,只有報錯時會出現。 |