跳转到内容

gRPC

在树中右键 ▸ 添加 ▸ gRPC 请求

一个 gRPC 标签页:服务器地址、调用类型“一元”、解析出的服务/方法路径、JSON 格式的请求消息以及元数据

字段作用
URL服务器的 host:port
服务 / 方法被调用的服务和 RPC
调用类型unaryserver-streamclient-streambidirectional-stream
请求消息消息内容,采用 JSON 格式
元数据随调用一起发送的键 / 值对(凭据就走这里)

有三种来源,按优先级排列:

  1. 通过服务器反射获得的描述符集 —— 这正是反射导入所生成的内容,它优先于其他来源;
  2. 存储在项目中的内联 .proto 内容
  3. 磁盘上某个 .proto 文件的路径

第一种方式有一个重要的实际好处:通过反射导入的请求在离线状态下依然可用,无需服务器可达。

在 gRPC 导入对话框中填入 host:port:Restorm 会查询反射服务、加载描述符并构建目录树 —— 每个服务一个文件夹,每个 RPC 一个请求,并附带一条示例消息。

重新连接到同一地址会被识别为重新同步,从而更新已有的目录树,而不是复制一份。

如果服务器没有实现反射,Restorm 会明确提示:这时请导入 .proto 文件。参见 导入 gRPC .proto 文件

有三种可用的传输方式:

传输方式何时使用
grpc(默认)基于 HTTP/2 的原生 gRPC
grpc-web服务器位于 gRPC-Web 代理之后
connectConnect-RPC 服务器

对于三种流式模式,响应面板会实时显示消息。在场景中, 请使用 gRPC 连接gRPC 发送gRPC 关闭 动作:连接在各个节点之间保持打开, 每条收到的消息都会发出一个事件,关闭动作则执行客户端侧的半关闭。

Restorm 能够托管一个 gRPC 模拟服务器:一组模拟方法,每个方法带有自己的响应消息(流式则用 JSON 数组)、 状态码、尾部元数据,或者一段脚本。服务器反射默认对外暴露,TLS 可通过 PEM 格式的证书和密钥进行配置。 参见模拟 gRPC API

十四个目标:grpcurlgrpc_cli、用于 gRPC-Web 的 grpcurl、用于 Connect-RPC 的 curl、 JavaScript 与 TypeScript(@grpc/grpc-js)、Python(grpcio)、Go、 Java(grpc-java)、C#(Grpc.Net.Client)、Ruby、Rust(tonic)、Kotlin (grpc-kotlin)、Swift(grpc-swift)。