跳转到内容

托管服务器

这些动作做的事和其他动作正好相反:它们不去调用某个服务,而是在场景运行期间托管一个服务。

典型用例是测试webhook。场景先打开一个服务器,触发业务调用,等待入站调用到来, 再检查它的内容 —— 全部都在同一张图里完成。

一个监听类动作有两个输出:

输出发出时机
connected一个信号,在服务器开始监听时发出一次
served每服务一次入站调用发出一次,携带 { request, response }

请注意这里没有 response 输出:这些节点不发出调用,而是接收调用。

和连接类动作一样,请在接到 served 上的节点里启用**“每收到一个事件就重放”**, 才能处理全部调用,而不只是第一个。

HTTP 服务器 ──connected──► HTTP 请求“触发 webhook”
└────────served──────► Assert:检查 request.body.event
然后 ──► 关闭 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 每个端口只打开一个套接字,并根据入站调用的性质进行分发。 因此一个 HTTP 模拟服务器和一个 WebSocket 服务器可以一起监听 :8080

只有当该端口上最后一条路由停止时,端口才会被释放。