毕设源码网站,杭州市拱墅区网站建设,都有什么网站,wordpress主题后台汉化上一次我们分享了关于 gRPC-Gateway 快速实战 #xff0c;可以查看地址来进行回顾 :
也可以查看关于 gRPC 的历史文章#xff1a;
gRPC介绍 gRPC 客户端调用服务端需要连接池吗#xff1f; gRPC的拦截器 gRPC的认证 分享一下 gRPC- HTTP网关 I
今天主要是分享关于 gRPC-G…上一次我们分享了关于 gRPC-Gateway 快速实战 可以查看地址来进行回顾 :
也可以查看关于 gRPC 的历史文章
gRPC介绍 gRPC 客户端调用服务端需要连接池吗 gRPC的拦截器 gRPC的认证 分享一下 gRPC- HTTP网关 I
今天主要是分享关于 gRPC-Gateway Swagger 的实战部分文章大体分为如下几个部分
基本环境补充 gRPC-GateWay Swagger 实战
基本环境补充
首先我们来看一下环境搭建完毕和完成实战之后的目录结构 通过目录结构我们可以看到
my_grpcgateway 目录下多了 pkg 目录
这个目录是通过工具生成的主要是处理 swagger 的 go 文件
my_grpcgateway/protoc/order/order.swagger.json
工具生成的 swagger.json 文件里面记录了关于 swagger 的接口 和 配置相关信息
my_grpcgateway/protoc/order/protoc-gen-swagger
protoc-gen-swagger 工具目录
my_grpcgateway/third_party
swagger 的资源目录
那么我们就动起手来一个一个的将上述的内容填充起来吧
安装 Protoc Plugin
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger执行完毕之后我们可以在我们的 GOPATH 目录下找到 protoc-gen-swagger 目录 此时我们将 protoc-gen-swagger 目录拷贝到我们的 my_grpcgateway/order/protoc 下
cd my_grpcgateway/order/protoc
cp /root/go/pkg/mod/github.com/grpc-ecosystem/grpc-gatewayv1.16.0/protoc-gen-swagger ./ -rf下载 swagger-ui 的静态资源
进入地址 https://github.com/swagger-api/swagger-ui 将项目代码 download 下来 然后再我们自己的项目目录 my_grpcgateway 下创建 third_party/swagger-ui 目录
mkdir third_party/swagger-ui/最后将上述 swagger-ui 的 dist 目录下的所有内容拷贝到我们自己的 third_party/swagger-ui 目录下
cp xx/dist/* my_grpcgateway/third_party/swagger-ui/安装必要的静态资源转换包
第一先下载 go-bindata用处是 go-bindata 用来将 swagger-ui 的源码转为 GO 代码
go get -u github.com/jteeuwen/go-bindata/...第二下载 go-bindata-assetfs用处是 go-bindata-assetfs 能够结合 net/http 标准库和 go-bindata 所生成 Swagger UI 的 Go 代码两者来供外部访问 也就是说 go-bindata-assetfs 可以对外提供文件服务这样可以通过web访问swagger的 json 文件
go get -u github.com/elazarl/go-bindata-assetfs/...在 my_grpcgateway 目录下新建 pkg 目录并使用工具在 pkg 目录下新增 swagger-ui 涉及的代码
cd my_grpcgateway
mkdir pkg
go-bindata --nocompress -pkg swagger -o pkg/ui/data/swagger/datafile.go third_party/swagger-ui/...执行完毕之后我们就可以在my_grpcgateway/pkg 目录下看到这样的目录结构了 关于环境的看到此处即可剩下的就来开始 gRPC-GateWay Swagger 实战吧再次动起手来干
gRPC-GateWay Swagger 实战
本次的 gRPC-GateWay Swagger 实战 是基于上次的 gRPC-GateWay 快速实战的项目代码的
修改 my_grpcgateway/protoc/order/order.proto 代码 这个时候我们可以关注到proto 的如下几个变化
我们新导入了包 import protoc-gen-swagger/options/annotations.proto; Proto 文件中我们新加入了 swagger 的定义
// 定义swagger内容
option (grpc.gateway.protoc_gen_swagger.options.openapiv2_swagger) {info: {title: grpc gateway order sample;version: 1.0;};schemes: HTTP;
};此处咱们将 schemes 设定为 HTTP 的本次我们不演示 HTTPS
使用工具生成 order.swagger.json 文件
protoc -I ./ \--go_out ./ --go_opt pathssource_relative \--go-grpc_out ./ --go-grpc_opt pathssource_relative \--grpc-gateway_out ./ --grpc-gateway_opt pathssource_relative \--swagger_outlogtostderrtrue:. \./order.proto上述命令前面几行和之前都是一样的本次主要是关注这句话
--swagger_outlogtostderrtrue:. \至此上述环境准备中说到的 4 个变化点我们都已经准备完毕下面开始 swagger 相关的代码编写 编写我们的服务并把 swagger 加上去
修改 my_grpcgateway/main.go 文件调用我们的 RunGrpcGwWithSwagger 接口 来启动 grpc-gateway 服务并带上 swagger 修改我们的 my_grpcgateway/server/server.go 文件新加一个 RunGrpcGwWithSwagger 函数里面处理 关于 swagger 相关内容
my_grpcgateway/server/server.go 上述代码不难应用起来也很简单我们可以看出咱们本次对外提供了 2 个接口
http://localhost:9999/swagger/order.swagger.json
访问这个接口实际上是请求到了 ****order.swagger.json ****文件的具体内容此处的处理逻辑是 svrSwaggerFile 函数会将 ****swagger.json 过滤出来并加上相对路径 ./protoc/order/ 实际上就访问到了我们服务项目目录中的 my_grpcgateway/protoc/order/order.swagger.json
http://localhost:9999/swagger-ui/
请求上述接口我们就可以看到咱们 swagger ui 界面了这个时候其实我们看到的接口并不是我们自己写的接口
因此如图中的查询路径目前是默认的 这个时候我们将搜索框中的内容修改成 http://localhost:9999/swagger/order.swagger.json 此时我们就可以看到我们自己编写的接口内容了关于 swagger 我们是可以在 swagger-ui 界面进行接口请求的这里就简单指引一下其他的就不赘述的了
第一点击 Try it out 第二填写咱们的请求参数 第三点击 Execute 之后查看咱们的响应结果 至此关于 gRPC-GateWay Swagger 实战 就分享到此处项目代码可以查看https://github.com/qingconglaixueit/my_grpcgateway_demo
感谢阅读欢迎交流点个赞关注一波 再走吧
欢迎点赞关注收藏
朋友们你的支持和鼓励是我坚持分享提高质量的动力 好了本次就到这里
技术是开放的我们的心态更应是开放的。拥抱变化向阳而生努力向前行。
我是阿兵云原生欢迎点赞关注收藏下次见~
可以进入地址进行体验和学习https://xxetb.xet.tech/s/3lucCI