最近在弄grpc的项目,但还需要给前端一些http的接口,就用了gateway。
废话不多说了,来这的肯定对grpc了解了,至于为啥用gateway自己谷歌吧。
直接开始吧
记录下安装准备过程
有时间再写个教程(二)展示下代码的运行
(protoc编辑器,就是把我们的 .proto 文件编译成不同语言的代码)
第一步 去下面 github
https://github.com/protocolbuffers/protobuf点击 release ,查看发行的版本
现在(2019-03-12)最新的是 v3.7.0
直接在刚才的GitHub的release页面下载编译好的包
创建一个 hello.proto 文件
先用官方文档中最简单的一段测试代码
syntax = "proto3"; package test; // The greeting service definition. service Greeter { // Sends a greeting rpc SayHello (HelloRequest) returns (HelloReply) {} } // The request message containing the user's name. message HelloRequest { string name = 1; } // The response message containing the greetings message HelloReply { string message = 1; }
protoc --go_out=. hello.proto 或者 protoc --go_out=plugins=grpc:. hello.proto 或者 protoc --go_out=. *.proto 或者 protoc --go_out=plugins=grpc:. *.proto
会生成文件 hello.pb.go
github地址:
https://github.com/grpc-ecosystem/grpc-gateway依次执下面go get
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger go get -u github.com/golang/protobuf/protoc-gen-go
上面执行成功后会在 $GOBIN (/usr/local/go/bin)目录下面 生成3个二进制文件
protoc-gen-grpc-gateway protoc-gen-grpc-swagger protoc-gen-go
安装完成了,接下来
修改一下刚才的 hello.proto 文件
syntax = "proto3"; package hello; import "google/api/annotations.proto"; message HelloRequest { string name = 1; int32 age = 2; } message HelloReply { string message = 1; } service HelloService { rpc SayHello (HelloRequest) returns (HelloReply){ option (google.api.http) = { post:"/v1/examples/sayhello" body:"*" }; } }
生成代码的命令需要变了
上面的proto文件用到了 import google/api 的一些文件
新的生成命令:
protoc -I/usr/local/include -I. -I$GOPATH/src -I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --go_out=plugins=grpc:. *.proto
生成 hello.pb.go
protoc -I/usr/local/include -I. -I$GOPATH/src -I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --grpc-gateway_out=logtostderr=true:. *.proto
生成 hello.pb.gw.go
protoc -I/usr/local/include -I. / -I$GOPATH/src / -I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis / --swagger_out=logtostderr=true:. *.proto
生成 hello.swagger.json
好了到这安装protoc编辑器,然后安装gateway和swagger 都搞定了, 准备工作都做完了
接下来就是开始码代码了
Golang-grpc 加 gateway(二)运行(protoc ,gateway,swagger