一、安装工具
1.1 protoc
是Google Protocol Buffers的编译器,它可以将.proto
文件编译成各种编程语言的代码。
1.2 protoc-gen-doc插件
protoc-gen-doc
是protoc
的文档生成器插件,它可以从.proto
文件中的注释生成HTML、JSON、DocBook和Markdown文档,php语言对应的插件是grpc_php_plugin。
二、创建*.proto文件
syntax = "proto3";
/**
* protoc --php_out=Grpc/compile --grpc_out=Grpc/compile --plugin=protoc-gen-grpc=/usr/bin/grpc_php_plugin Grpc/proto/grpcDemo.proto
* protoc --go_out=./proto --go-grpc_out=./proto ./proto/grpc_demo.proto
*/
//protobuf 文件中定义命名空间或模块,避免命名冲突
package grpcDemo;
//go代码包生成的路径
option go_package = "grpc/grpcDemo";
//php生成的客户端代码包路径,此选项仅在php端时使用
option php_namespace = "Protobuf\\Grpc\\GrpcDemo";
service GrpcDemo {
//获取信息
rpc GetInfo(GetInfoReq) returns (GetInfoRes) {};
}
message GetInfoReq {
string name = 1;
int32 age = 2;
}
message GetInfoRes {
int32 code = 1;
string msg = 2;
GetInfoReq data = 3;
}
三、执行命令
3.1 php端
protoc --php_out=Grpc/compile --grpc_out=Grpc/compile --plugin=protoc-gen-grpc=/usr/bin/grpc_php_plugin Grpc/proto/grpcDemo.proto
注意:grpc_out表示grpc客户端生成目录,需与--plugin一起使用;php_out表示请求及响应数据格式生成目录
3.2 go端
protoc --go_out=./proto --go-grpc_out=./proto ./proto/grpc_demo.proto
注意:go-grpc_out表示grpc服务端生成目录,因已指定插件为go,所以可不与--plugin一起使用;go_out表示请求及响应数据格式生成目录