托管服务器
这些动作做的事和其他动作正好相反:它们不去调用某个服务,而是在场景运行期间托管一个服务。
典型用例是测试webhook。场景先打开一个服务器,触发业务调用,等待入站调用到来, 再检查它的内容 —— 全部都在同一张图里完成。
一个监听类动作有两个输出:
| 输出 | 发出时机 |
|---|---|
connected | 一个信号,在服务器开始监听时发出一次 |
served | 每服务一次入站调用发出一次,携带 { request, response } |
请注意这里没有 response 输出:这些节点不发出调用,而是接收调用。
和连接类动作一样,请在接到 served 上的节点里启用**“每收到一个事件就重放”**,
才能处理全部调用,而不只是第一个。
HTTP 服务器 ──connected──► HTTP 请求“触发 webhook” └────────served──────► Assert:检查 request.body.event 然后 ──► 关闭 HTTP 服务器可用的成对动作
Section titled “可用的成对动作”| 监听 | 关闭 | 协议 |
|---|---|---|
| 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 每个端口只打开一个套接字,并根据入站调用的性质进行分发。
因此一个 HTTP 模拟服务器和一个 WebSocket 服务器可以一起监听 :8080。
只有当该端口上最后一条路由停止时,端口才会被释放。