grpc-gateway使用


前言

記錄下使用grpc-gateway來支持grpc服務的http請求,網上大都是引入google/api/annotations.proto的方式,懶的改每個proto文件,在grpc-gateway的github里看到了另一種方式,不用改proto文件,適合~

原理

grpc-gateway的原理我就不贅述了,大概邏輯是http的請求過來,grpc-gateway接受請求,再生成grpc的client,去請求grpc的server端;做了層轉化
所以是啟了2個服務,一個http服務,一個grpc服務
如圖:

安裝grpc-gateway的相關包

$ go get github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway
$ go get google.golang.org/protobuf/cmd/protoc-gen-go
$ go get google.golang.org/grpc/cmd/protoc-gen-go-grpc

protoc生成相關編譯文件

用protoc編譯proto文件的命令,每個proto文件分別生成pb.go和pb.gw.go的后綴文件,即相關的grpc和網關的

protoc -I ../proto目錄 \
--go_out=plugins=grpc:../編譯生成的文件目錄 \ 
--grpc-gateway_out ../編譯生成的文件目錄 \
--grpc-gateway_opt logtostderr=true \
--grpc-gateway_opt paths=source_relative \
--grpc-gateway_opt generate_unbound_methods=true \ 
../proto目錄/*.proto

測試請求http

這里是請求test包的Service服務的Hello方法 ;必須是Post請求,因為看pb.gw.go里默認的都是POST方法請求,不然會提示錯誤"Method Not Allowed"

curl -XPOST  http://localhost:8081/test.Service/Hello


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM