工作中你会使用到 grpcurl 吗?

简介: 在平时的开发过程中,我们一般是 http 接口对外, grpc 接口对内部微服务

在平时的开发过程中,我们一般是 http 接口对外, grpc 接口对内部微服务

相信对于如何去请求 http 接口,大家都很熟悉了

  • 如果是 inux 里面使用 curl 命令
  • 在 windows 里面我们可以使用 postman 来请求接口
  • 如果对于一个云上开发的接口的话,我们可能会使用 apifox 来进行请求

那么对于 grpc 服务端提供的接口,我们一般会如何去请求这些接口来自测呢

  • Windows 里面我们可以使用 bloomRPC 工具
  • Linux 里面我们可以使用 grpcurl 工具

DEMO

关于 grpc 的基本知识,感兴趣的可以查看历史文章:

那么我们写一个 demo,一个 grpc 的服务端,提供如下接口

  • 查询租户的详情
  • 查询租户的列表

Demo 目录结构如下:

image.png

咱们的 proto 文件可以是这样的:

image.png

protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative tenant.proto


基本简单的代码实现如下:

rpc_services.go 代码如下

image.png

这个时候启动咱们的服务端,如何运行 golang 程序就不赘述了

bloomRPC 工具

开始来下载 bloomRPC 工具

对于 bloomRPC 工具,我们可以在这个地址里面去下载,自由选择:

image.png

下载安装之后,我们可以看到 bloomRPC 是如下这个界面,非常清爽

image.png

导入咱们的 tenant.proto 文件后,可以看到咱们服务端提供的如下两个接口:

  • get_tenant_detail
  • get_tenant_list

这个时候,咱们就可以使用 bloomRPC 工具,请求咱们服务端的接口了,效果如下:

获取租户详情

image.png

获取租户列表

image.png

Windows 的工具比较简单,我们来看看 linux 里面的 grpcurl 工具

grpcurl 工具

grpcurl 是linux 里面与grpc服务器交互的命令行工具,咱们就可以理解是 curl 工具的 grpc 版本

使用 grpcurl 工具,我们需要在咱们的代码实现中给我们的 grpc 服务端注册一下 reflection

  • 先来看看 grpcurl 工具的安装
go get github.com/fullstorydev/grpcurl
go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest
  • 然后在我们上述的 rpc_services.go 代码中,注册 reflection

image.png

  • 效果验证

这个时候,咱们将上述的 rpc_tool_demo 整个项目放到 linux 中进行运行,启动服务端,当然我的 demo 中 grpc 服务端监听的是 8888 端口,如果咱们 linux 环境这个端口已经被占用了,可以自行更换端口

以本 demo 为例

查看服务列表

grpcurl -plaintext localhost:8899 list

查看指定服务的接口列表

grpcurl -plaintext localhost:8899 list tenant.Tenant

查看某一个 rpc 接口的实际情况

grpcurl -plaintext localhost:8899 describe tenant.Tenant.get_tenant_detail

查看具体某一个结构体的详情

grpcurl -plaintext localhost:8899 describe .tenant.TenantDetailRsp

image.png

使用 grpcurl 请求 grpc 服务端的接口

image.png

对于 grpcurl 的其他奇淫巧技可以查看帮助清单

grpcurl -h

如果需要查看 demo 源码,可以进入地址:github.com/qingconglai…

至此,本篇内容结束

【欢迎查看历史文章】

感谢阅读,欢迎交流,点个赞,关注一波 再走吧

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~



相关文章
|
3月前
|
自动驾驶 物联网 5G
什么是 5G 以及它如何工作?
【8月更文挑战第23天】
378 0
|
6月前
|
数据采集 分布式计算 DataWorks
准备工作
本文档介绍了阿里云智能推荐服务的使用流程,包括数据准备、行为埋点逻辑核对和数据上传方案。内容涉及不同行业的数据规范,如内容、电商和新闻行业,以及测试数据的获取。数据上传分为启动数据和实时数据两步,提供了全服务端SDK和友盟+服务端SDK等多种上传方案。此外,还介绍了通过历史数据启动实例的方法。建议用户根据自身行业和数据情况选择合适的方案。
47 4
|
11月前
|
Cloud Native Linux Go
工作中你会使用到 grpcurl 吗?
工作中你会使用到 grpcurl 吗?
|
开发者
思考你的工作
为什么你明明每天工作很努力,但依然感觉自己的技术进步很慢?
61 0
|
IDE JavaScript 定位技术
2021年,工作发生了动荡.....
你能相信在过去的两年里,我们的工作方式发生了动荡吗? 开始的时候很艰难,但现在,2021年的结束就在眼前,我们已经习惯了远程办公、在线办公,并期望市场能赶上新常态。 对远程办公团队(尤其是开发团队)的创新和协作的要求,可能是我们目前可以观察到的行业中最强烈的趋势之一。
2021年,工作发生了动荡.....
|
Web App开发 移动开发 前端开发
工作中的一些知识总结
跳转 跳转登陆页 if(HybridMethod.isApp()) { RainbowBridge.callMethod('JsInvokeAppScope', 'goLogin'); } else { var _index = window.
1993 0