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

| 字段 | 作用 |
|---|---|
| URL | 服务器的 host:port |
| 服务 / 方法 | 被调用的服务和 RPC |
| 调用类型 | unary、server-stream、client-stream、bidirectional-stream |
| 请求消息 | 消息内容,采用 JSON 格式 |
| 元数据 | 随调用一起发送的键 / 值对(凭据就走这里) |
服务定义从哪里来
Section titled “服务定义从哪里来”有三种来源,按优先级排列:
- 通过服务器反射获得的描述符集 —— 这正是反射导入所生成的内容,它优先于其他来源;
- 存储在项目中的内联
.proto内容; - 磁盘上某个
.proto文件的路径。
第一种方式有一个重要的实际好处:通过反射导入的请求在离线状态下依然可用,无需服务器可达。
通过反射导入
Section titled “通过反射导入”在 gRPC 导入对话框中填入 host:port:Restorm 会查询反射服务、加载描述符并构建目录树 ——
每个服务一个文件夹,每个 RPC 一个请求,并附带一条示例消息。
重新连接到同一地址会被识别为重新同步,从而更新已有的目录树,而不是复制一份。
如果服务器没有实现反射,Restorm 会明确提示:这时请导入 .proto 文件。参见
导入 gRPC .proto 文件。
有三种可用的传输方式:
| 传输方式 | 何时使用 |
|---|---|
grpc(默认) | 基于 HTTP/2 的原生 gRPC |
grpc-web | 服务器位于 gRPC-Web 代理之后 |
connect | Connect-RPC 服务器 |
对于三种流式模式,响应面板会实时显示消息。在场景中, 请使用 gRPC 连接、gRPC 发送 和 gRPC 关闭 动作:连接在各个节点之间保持打开, 每条收到的消息都会发出一个事件,关闭动作则执行客户端侧的半关闭。
Restorm 能够托管一个 gRPC 模拟服务器:一组模拟方法,每个方法带有自己的响应消息(流式则用 JSON 数组)、 状态码、尾部元数据,或者一段脚本。服务器反射默认对外暴露,TLS 可通过 PEM 格式的证书和密钥进行配置。 参见模拟 gRPC API。
十四个目标:grpcurl、grpc_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)。