《本文不涉及原理,纯使用操作》
操作系统:Ubuntu18.04+amd64,我打包了的是我自己的平台的可执行程序,其他平台请自行使用源码编译相关工具。
开始之前,先安装protoc相关工具和环境,具体百度(我默认你肯定已经装好了,能打出protoc命令而不报出no command found)。再去下载我的模板项目,并下载相关依赖和必须工具,边下边看我应该都打包好了。缺了文件或者有问题请及时通知我,谢谢!
我的示例工程:https://gitee.com/wzj2018/grpc-example,github一言难尽,用了gitee。理论上里面的可执行程序可以直接体验。
用到的工具源码:https://github.com/grpc-ecosystem ,你需要里面的go-grpc-middleware和grpc-gateway。grpc-gateway里面有我们需要的 annotations.proto。
打包的工具们:https://download.csdn.net/download/m0_38059938/12537541。解压后最好放到GOPATH/bin里面。GOPATH/bin也要添加到系统PATH中。
先通过效果介绍一下。。。
假设做了几十个rpc接口,那么你想测试rpc调用,你想一个个请求手写吗?显然不想。现在就有这么个工具,可以只需要写少量代码,即可自动化生成可视化接口调用测试工具:
下面就进行实际操作。
想直接试试的可以现在就打开下载的工程示例自己摸索操作了,里面也有我已经编译好的程序,windows 和 linux都有。
1、准备你的*.proto协议文件。
2、MakeFile
makefile放在和proto文件一个目录下。如果你执行make报错了,可以根据报的错分析原因,最常见的就是找不到命令,这个多半是我打包的工具你没有妥善部署。
注意了,尽管我makefile里面是写的*.proto,意味着他会处理所有这个目录下的proto文件。但是,如果你真的有多个proto文件,请尽量合并成一个proto来进行测试。当然多个proto是可以的,只不过生成的代码需要人为修改,因为会出现函数的重复定义。相信读者你实在是需要了,可以稍微花点功夫处理下,我不再赘述了。
make之后,会在当前工作目录下生成若干文件:多个go代码文件,一个swagger.json文件。go代码文件中就有我们可以直接使用的已经写好的grpc调用函数。哪个json是接口说明文档,把它丢到gateway/swagger中,重命名为swagger.json,即可再浏览器中访问。
3、编写一个模拟的server service
4、编写server主程序
5、编写gateway程序
客户端内容比较呆,这里不再阐述,详情可以看我的工程实例里面。但事实上,gateway又何尝不是一个clinet?
最后
我把所有内容都尽量精简并浓缩到了一个main.go中,理论上现在只需要编译通过就行了。
总结:
1、将填写了SWAGGER API option参数的 *.proto 放到 ./pb/ 目录下
2、/pb/ 目录下,执行make
3、/pb/ 目录下,生成.go代码若干以及一个apidocs.swagger.json,将它复制到 /gateway/swagger目录下,替换掉那里的swagger.json
4、修改 /gateway/main.go 中的
1、run()函数中的需要修改部分
2、main()函数中的目标server address
5、在 /gateway/ 目录下执行 go build 命令编译,得到可执行程序,运行即可在run()函数中的监听端口访问