跳到內容

託管伺服器

這些動作做的事跟其他動作正好相反:它們不去呼叫服務,而是在情境執行的這段時間裡 託管一個服務。

典型的用途是測試 webhook。情境開一個伺服器,觸發業務呼叫,等著那個進來的呼叫抵 達,然後檢查它的內容 — 全部都在同一張圖裡完成。

一個監聽動作有兩個輸出:

輸出發出時機
connected一個訊號,在伺服器開始監聽時發出一次
served每處理一個進來的呼叫就發出一次,帶著 { request, response }

請注意這裡沒有 response 輸出:這些節點不發出呼叫,而是接收呼叫。

和連線一樣,請在接到 served 上的節點啟用**「每次收到事件都重播」**,才能處理所有 呼叫,而不是只處理第一個。

HTTP 伺服器 ──connected──► HTTP 請求「觸發 webhook」
└────────served──────► 對 request.body.event 做 Assert
然後 ──► 關閉 HTTP 伺服器
監聽關閉協定
HTTP 伺服器關閉 HTTP 伺服器HTTP
gRPC 伺服器關閉 gRPC 伺服器gRPC
SOAP 伺服器關閉 SOAP 伺服器SOAP — 依 SOAPAction 或作業名稱分派
GraphQL 伺服器關閉 GraphQL 伺服器GraphQL — 提供 SDL 與已設定的解析器
OData 伺服器關閉 OData 伺服器OData — 會套用 $filter$select$orderby$top$skip$count$expand$batch

另外還有兩個關閉動作,是給 WebSocket 家族的伺服器用的:關閉 WebSocket 伺服器關閉 Socket.IO 伺服器 — 請參閱 連線與串流

回應就是在該動作所驅動的那個請求上設定的內容:HTTP 的狀態、標頭與內文,gRPC 的 模擬方法,SOAP 的作業,GraphQL 的解析器,OData 的資料。

{{variables}} 是在提供服務的那一刻才解析的:伺服器監聽期間改動一個變數,下一次的 回應就會跟著變。請參閱伺服器模式

Restorm 每個連接埠只開一個 socket,並依呼叫的性質分派。所以一個 HTTP 模擬伺服 器和一個 WebSocket 伺服器可以一起在 :8080 上監聽。

連接埠會在它的最後一條路由停止時才釋放。