做個筆記
官方文檔:https://grpc.io/docs/languages/go/quickstart/
新版使用
$ protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
helloworld/helloworld.proto
or
$ protoc -I . \
--go_out ./gen/go/ --go_opt paths=source_relative \
--go-grpc_out ./gen/go/ --go-grpc_opt paths=source_relative \
your/service/v1/your_service.proto
grpc-gateway使用:https://github.com/grpc-ecosystem/grpc-gateway
如果報錯:protoc-gen-grpc-gateway: program not found or is not executable
Please specify a program using absolute path or make sure the program is available in your PATH system variable
--grpc-gateway_out: protoc-gen-grpc-gateway: Plugin failed with status code 1.
表示grpc-gateway未找到古戴,正常按照官方文檔走的話登澜,出的這個錯贯溅,大概率是Go的配置問題补胚,記得把GOPATH/bin添加到系統(tǒng)PATH里面,如下(主要是添加路徑)
// 我的是zsh,查看一下有沒有添加GOPATH
cat .zshrc
// 編輯
vim ~/.zshrc
// 按 i 進入編輯模式,然后添加你的路徑
export GOPATH=/Users/**/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN
// 然后按 esc 退出編輯模式 按 :wq 保存退出
// 配置生效
source ~/.zshrc
記錄一下自己的gen.sh
protoc -I . \
--go_out ./gen/go/ --go_opt paths=source_relative \
--go-grpc_out ./gen/go/ --go-grpc_opt paths=source_relative \
my.proto
protoc -I . --grpc-gateway_out ./gen/go \
--grpc-gateway_opt paths=source_relative \
--grpc-gateway_opt grpc_api_configuration=my.yaml \
my.proto
PROTO_PATH=./auth/api
GO_OUT_PATH=./auth/api/gen/v1
protoc -I $PROTO_PATH \
--go_out $GO_OUT_PATH --go_opt paths=source_relative \
--go-grpc_out $GO_OUT_PATH --go-grpc_opt paths=source_relative \
auth.proto
protoc -I $PROTO_PATH --grpc-gateway_out $GO_OUT_PATH \
--grpc-gateway_opt paths=source_relative \
--grpc-gateway_opt grpc_api_configuration=$PROTO_PATH/auth.yaml \
auth.proto
這個寫的不錯:https://www.cnblogs.com/remixnameless/p/15975971.html