无需登录 数据私有 本地保存

gRPC-Web 请求构建器 - 服务调用与响应查看

73
0
0
0
什么是 gRPC-Web,它与标准 gRPC 有什么区别?
gRPC-Web 是 gRPC 协议的浏览器兼容版本。标准 gRPC 基于 HTTP/2 协议实现双向流式通信,但浏览器的 Fetch API 和 XMLHttpRequest 不完整支持 HTTP/2 的所有特性(如 Trailers)。gRPC-Web 通过限制功能集(如不支持客户端流和双向流)并引入代理层来解决这一问题,使前端应用能够直接调用 gRPC 服务。
gRPC-Web 的帧格式是怎样的?
gRPC-Web 使用长度前缀帧格式(Length-Prefixed Frame)。每帧由三部分组成:第 1 字节是压缩标志位(0 表示未压缩,1 表示已压缩),接下来 4 字节是负载数据的长度(大端序),最后是实际的负载数据。对于 Trailers 帧,压缩标志位为 0x80。这种格式确保了二进制数据在 HTTP 传输中的完整性。
使用本工具是否需要配置代理服务器?
这取决于你的网络架构。如果 gRPC 服务直接支持 gRPC-Web 协议(某些框架如 Connect 支持),则可以直接连接。但大多数情况下,你需要一个代理服务器(如 Envoy、gRPC-Web Proxy)将浏览器的 gRPC-Web 请求转换为标准 gRPC 请求。在工具的「代理地址」字段中填写你的代理服务器地址即可。
常见的 gRPC 状态码有哪些?
常用的 gRPC 状态码包括:OK(0) 表示调用成功;CANCELLED(1) 表示操作被取消;INVALID_ARGUMENT(3) 表示参数无效;NOT_FOUND(5) 表示请求的资源不存在;ALREADY_EXISTS(6) 表示资源已存在;PERMISSION_DENIED(7) 表示权限不足;UNAUTHENTICATED(16) 表示未通过认证;UNAVAILABLE(14) 表示服务不可用。在工具的响应区域会显示 gRPC 状态码和对应的消息描述。
Content-Type 四种格式有什么区别?
application/grpc-web:二进制帧格式,浏览器直接发送/接收二进制数据,效率最高,适合大多数场景。application/grpc-web-text:将二进制帧进行 Base64 编码后传输,兼容性更好,但体积增大约 33%。application/grpc-web+proto 和 application/grpc-web-text+proto:分别对应上述两种格式的 Proto 变体,用于特定的序列化需求。一般推荐使用 application/grpc-web。
如何调试请求失败的问题?
首先检查 HTTP 状态码是否为 200,非 200 通常表示代理或网络层问题。其次查看 gRPC 状态码,非 OK(0) 表示服务端处理失败。检查请求体 JSON 格式是否正确,字段名称是否与 Protobuf 定义匹配。确认 Metadata 中的认证信息是否正确。使用「预览请求帧」功能检查二进制帧是否正确构造。还可以查看浏览器开发者工具的 Network 面板获取更多网络层信息。
请求历史记录会保存多久?
请求历史记录保存在浏览器的本地存储(LocalStorage)中,会持续保留直到你手动清除浏览器数据或清除历史记录。每次成功发送的请求都会自动保存,包括端点地址、请求体、响应结果等完整信息,方便你随时回溯和重复调用。
预览请求帧功能有什么用途?
预览请求帧功能可以展示即将发送的原始二进制帧结构,包括帧头(压缩标志+长度)和负载数据的十六进制表示。这对于理解 gRPC-Web 的底层传输机制非常有帮助,同时也能帮助调试序列化问题——如果你发现服务端返回 INVALID_ARGUMENT,可以通过预览帧来确认请求数据是否正确编码。