使用protoc命令生成go代码的命令有哪些?

提问者:Rae 问题分类:go语言
使用protoc命令生成go代码的命令有哪些?
3 个回答
养猪发家致富
养猪发家致富
1、生成 go 代码(struct 和 enum 等基础类型)
protoc --proto_path=. --go_out=paths=source_relative:../ ./*.proto
2、生成 grpc 服务代码
protoc --proto_path=. --go-grpc_out=paths=source_relative:../ ./*.proto
3、生成 rest 服务代码
protoc --proto_path=. --go-http_out=paths=source_relative:../ ./*.proto
4、生成 gRPC 状态码映射代码
protoc --proto_path=. --go-errors_out=paths=source_relative:../ ./*.proto
5、生成 消息参数校验代码
protoc --proto_path=. --validate_out=paths=source_relative,lang=go:../ ./*.proto
6、生成 OpenAPI v2 json 文档
protoc --proto_path=. --openapiv2_out=paths=source_relative:../ --openapiv2_opt logtostderr=true --openapiv2_opt json_names_for_fields=true ./*.proto
7、生成 OpenAPI v3 yaml 文档
protoc --proto_path=. --openapi_out=naming=json=paths=source_relative:../ ./*.proto
发布于:3个月前 (01-23) IP属地:四川省
人潮似海遇见你°
人潮似海遇见你°
如果是使用makefile文件的话,执行如下:
.PHONY: api
# generate api proto
api:
 protoc --proto_path=./api \
        --proto_path=./third_party \
         --go_out=paths=source_relative:./api \
         --go-http_out=paths=source_relative:./api \
         --go-grpc_out=paths=source_relative:./api \
        --openapi_out=fq_schema_naming=true,default_response=false:. \
        $(API_PROTO_FILES)
.PHONY: conf
# generate config define code
conf:
 protoc --proto_path=. \
        --proto_path=../../../third_party \
        --go_out=paths=source_relative:. \
        ./internal/conf/*.proto
发布于:3个月前 (01-23) IP属地:四川省
曾经多难忘
曾经多难忘
可以把上面的命令做成一个脚本,然后放在对应的目录下一键执行即可:
#!/bin/bash
# generate go struct code
protoc --proto_path=. --go_out=paths=source_relative:../ ./*.proto
# generate grpc service code
protoc --proto_path=. --go-grpc_out=paths=source_relative:../ ./*.proto
# generate rest service code
protoc --proto_path=. --go-http_out=paths=source_relative:../ ./*.proto
# generate kratos errors code
protoc --proto_path=. --go-errors_out=paths=source_relative:../ ./*.proto
# generate message validator code
protoc --proto_path=. --validate_out=paths=source_relative,lang=go:../ ./*.proto
# generate openapi v2 json doc
protoc --proto_path=. --openapiv2_out=paths=source_relative:../ --openapiv2_opt logtostderr=true --openapiv2_opt json_names_for_fields=true ./*.proto
# generate openapi v3 yaml doc
protoc --proto_path=. --openapi_out=naming=json=paths=source_relative:../ ./*.proto
在windows执行的话,把#!bin/bash去掉即可
发布于:3个月前 (01-23) IP属地:四川省
我来回答