标题: grpc生成go文件命令
类型: Golang
内容:
一、 生成tag.bp.go文件命令:
1、protoc --go_out=plugins=grpc:../../../modules/course/info/ ./proto_src/course/info/info.proto
2、protoc --proto_path=googleapis-master --proto_path=proto --go_out=plugins=grpc:. ./proto/*.proto
其中 :
1) grpc:../../../modules/course/info/ 表示文件的生成目录
2) ./proto_src/course/info/info.proto 表示 info.proto 的文件
3) --proto_path指的是寻找文件的目录
遇到的问题
syntax = "proto3";
package proto;
option go_package = "proto_pub/common;common";
//todo::生成proto文件时这个地方总是引入不成功,报错,
//解决: 使用--proto_path这个命令,指定项目先文件的目录,这个文件在googleapis-master这个包文件中
import "google/protobuf/any.proto";
message Pager {
int64 page = 1;
int64 page_size = 2;
int64 total_rows = 3;
}
message Error {
int32 code = 1;
string message = 2;
google.protobuf.Any detail = 3;
}
二、生成tag.pb.gw.go文件的命令:
注:一定要选取具体的问题生成否则会报错
protoc --proto_path=googleapis-master --proto_path=proto --grpc-gateway_out=logtostderr=true:. ./proto/tag.proto
生成这个文件时要加上下面这几行代码:
import "google/api/annotations.proto";
service TagService {
rpc GetTagList(GetTagListRequest) returns (GetTagListReply){
option (google.api.http) = {
get: "/api/v1/tags"
};
}
}
三、生成swagger接口文件
protoc --proto_path=googleapis-master --proto_path=proto --swagger_out=logtostderr=true:. ./proto/tag.proto