託管伺服器
這些動作做的事跟其他動作正好相反:它們不去呼叫服務,而是在情境執行的這段時間裡 託管一個服務。
典型的用途是測試 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 伺服器 — 請參閱 連線與串流。
伺服器會回應什麼
Section titled “伺服器會回應什麼”回應就是在該動作所驅動的那個請求上設定的內容:HTTP 的狀態、標頭與內文,gRPC 的 模擬方法,SOAP 的作業,GraphQL 的解析器,OData 的資料。
{{variables}} 是在提供服務的那一刻才解析的:伺服器監聽期間改動一個變數,下一次的
回應就會跟著變。請參閱伺服器模式。
Restorm 每個連接埠只開一個 socket,並依呼叫的性質分派。所以一個 HTTP 模擬伺服
器和一個 WebSocket 伺服器可以一起在 :8080 上監聽。
連接埠會在它的最後一條路由停止時才釋放。