本篇概览
-
本文《gRPC学习》系列的第六篇,前文咱们实战了gRPC-Gateway,将gRPC服务以RESTful形式对外暴露,当时由于篇幅所限没有完成swagger集成,本篇来完成这个工作:开发gRPC服务,为其提供gRPC-Gateway,并提供在线swagger服务;
-
本文由以下章节构成,这也是gRPC-Gateway集成swagger的常规流程:
-
提前预览关键知识点;
-
新建工程文件夹;
-
安装必要的go包;
-
编写proto文件,使swagger支持http(默认是https);
-
生成gRPC、gRPC-Gateway所需的go源码;
-
生成swagger所需的json文件;
-
下载swagger-ui的源码,以此生成go源码;
-
编写gRPC的服务端代码;
-
编写gRPC-Gateway服务端的代码;
-
验证;
- 注意,本文的所有操作都没有用到root账号,而是前文创建的golang账号;
源码下载
- 本篇实战中的源码可在GitHub下载到,地址和链接信息如下表所示(https://github.com/zq2599/blog_demos):
| 名称 | 链接 | 备注 |
| :-- | :-- | :-- |
| 项目主页 | https://github.com/zq2599/blog_demos | 该项目在GitHub上的主页 |
| git仓库地址(https) | https://github.com/zq2599/blog_demos.git | 该项目源码的仓库地址,https协议 |
| git仓库地址(ssh) | git@github.com:zq2599/blog_demos.git | 该项目源码的仓库地址,ssh协议 |
- 这个git项目中有多个文件夹,本章的应用在go-source文件夹下,如下图红框所示:
- go-source里面有多个子文件夹,本篇的源码在swaggerdemo中,如下图红框:
提前预览关键知识点
在gRPC-Gateway集成swagger服务的过程并不简单,咱们将其中的重点提前看一下,做到心里有数:
-
为了简化实战过程,gRPC-Gateway暴露的服务并未使用https,而是http,但是swagger-ui提供的调用服务却是https的,因此要在proto文件中指定swagger以http调用服务,指定的时候会用到文件protoc-gen-swagger/options/annotations.proto,因此需要找到这个文件对应的包,放在合适的位置;
-
swaggerdemo.