Protobuf
Protobuf 是一种用于序列化结构化数据的免费开源跨平台数据格式。它在开发通过网络相互通信或存储数据的程序时非常有用。该方法包括描述某些数据结构的接口描述语言和根据该描述生成源代码的程序,用于生成或解析表示结构化数据的字节流
让我来带你定义一个 .proto
文件
// [开始头部声明]
syntax = "proto3";
packagecom.crazymakercircle.netty.protocol;
// [结束头部声明]
// [开始 java选项配置]
option java_package = "com.crazymakercircle.netty.protocol";
option java_outer_classname = "MsgProtos";
// [结束 java选项配置]
// [开始消息定义]
message Msg {
uint32 id = 1; //消息ID
string content = 2; //消息内容
}
// [结束消息定义]
例子:
syntax = "proto3";
message Model {
int64 id = 1;
string action = 2;
string content = 3;
string sender = 4;
string receiver = 5;
string extra = 6;
string title = 7;
string format = 8;
int64 timestamp = 9;
}
注:在 idea 中下载 protobuf 插件即可以高亮 proto 文件
在定义 .proto 文件时,需要注意以下几件事:
- 要声明此文件所使用的的 Protobuf 协议版本
- 可以使用 2 或者 3 版本
- 可支持多种语言,通过 option 进行配置
RPC
RPC 是什么
RPC 的全称是 Remote Procedure Call Protocol,中文名是远程过程调用协议。
通俗点讲就是:客户端可以在不清楚任何调用因素的情况下,去调用别的计算机上的事件,就像调用本计算机的事件一样。
官方的描述是:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
特点
- RPC是一种协议。
- 网络协议和网络IO模型对其透明。
- 信息格式对其透明。
- 有跨语言能力。
基于 proto 文件生成 RPC 文档
介绍如何生成 .proto 文件的接口定义文档。生成的文档支持 markdown 格式、html 网页格式。
Makefile 示例
PROTO_DIR=./proto
DOC_DIR=./doc
#生成proto文件的markdown接口定义文档
protodoc-markdown:
@go install github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc@latest
@mkdir -p $(DOC_DIR)
@protoc --doc_out=$(DOC_DIR) --proto_path=$(PROTO_DIR) --doc_opt=markdown,$(DOC_DIR)/proto.md $(PROTO_DIR)/*.proto
#生成proto文件的html接口定义文档
protodoc-html:
@go install github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc@latest
@mkdir -p $(DOC_DIR)
@protoc --doc_out=$(DOC_DIR) --proto_path=$(PROTO_DIR) --doc_opt=html,$(DOC_DIR)/proto.html $(PROTO_DIR)/*.proto
使用 Postman 发送 RPC 接口
以下是使用 Postman 调用 JSON-RPC 接口的步骤:
- 第一步:打开 Postman,创建一个新的 HTTP 请求
- 第二步:在请求面板中,选择 HTTP 方法为 POST
- 第三步:输入 JSON-RPC 接口的 URL 地址
- 第四步:在 Body 中选择 raw - JSON,然后输入以下 JSON 格式的数据:
{
"jsonrpc": "2.0",
"method": {{要调用的方法名称}},
"params": {{方法所需的参数}},
"id": {{请求的唯一标识符}}
}
- 第五步:单击 Send 按钮发送请求。如果一切正常,您将在响应面板中看到 JSON 格式的响应数据。
在这个例子中,我们调用名为 echo 的方法,并提供一个对象作为参数。请求的唯一标识符为 123。
使用 Apifox 发送 RPC 接口
使用 Apifox 也能发送 JSON-RPC 接口,并且 Postman 到 Apifox 几乎是无缝衔接的,且 Apifox 支持中文显示,非常方便上手~
关于 Apifox
Apifox 是一体化 API 协作平台,可以实现 API 文档、API 调试、API Mock、 API 自动化测试,是更先进的 API 设计/开发/测试工具。Apifox 提供了一种全面的 API 管理解决方案。使用 Apifox ,你可以在统一的平台上设计、调试、测试以及协作你的 API,消除了在不同工具之间切换和数据不一致的问题。 简化了你的 API 工作流,并确保了前端、后端和测试人员之间的高效协作。