1.生成proto文件
protoc --proto_path=.:$GOPATH/src --go_out=. --micro_out=. proto/foobar/foobar.proto
// 生成protoc 文档
(1.)下载protoc-gen-doc二进制到/usr/local/bin目录
go get -u github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc
(2.)生成proto文件时加入下面的参数
--doc_out=./doc --doc_opt=html,index.html
protoc --doc_out=. --doc_opt=html,index.html protos/*.proto
protoc --proto_path=.:$GOPATH/src --go_out=. --micro_out=. --doc_out=./doc --doc_opt=html,index.html proto/foobar/foobar.proto
(3.)生成swagger
go get "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2"
protoc --openapiv2_out . --openapiv2_opt allow_merge=true,merge_file_name=dms --openapiv2_opt logtostderr=true ./*.proto
swagger serve -F=swagger ./dms.swagger.json --host=localhost -p=5000
2.单元测试覆盖
go test ./... --cover --count=2
proto 参数校验
1.下载插件
go get github.com/favadi/protoc-go-inject-tag
2.proto文件中写注释
// file: test.proto
syntax = "proto3";
package pb;
message IP {
// @inject_tag: valid:"ip"
string Address = 1;
}
3.生成文件
protoc --go_out=. test.proto
protoc-go-inject-tag -input=./test.pb.go
相关链接
https://github.com/favadi/protoc-go-inject-tag
https://www.kaifa99.com/GitHub/article_142142
https://studygolang.com/articles/28563
https://marvinsblog.net/post/2020-08-05-proto-doc-gen/