工作中你会使用到 grpcurl 吗?

代码寻梦鹤
• 阅读 723

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

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

  • 如果是 inux 里面使用 curl 命令

<!---->

  • 在 windows 里面我们可以使用 postman 来请求接口

<!---->

  • 如果对于一个云上开发的接口的话,我们可能会使用 apifox 来进行请求

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

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

<!---->

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

DEMO

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

<!---->

<!---->

<!---->

<!---->

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

  • 查询租户的详情

<!---->

  • 查询租户的列表

Demo 目录结构如下:

工作中你会使用到 grpcurl 吗?

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

工作中你会使用到 grpcurl 吗?

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

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

rpc_services.go 代码如下

工作中你会使用到 grpcurl 吗?

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

bloomRPC 工具

开始来下载 bloomRPC 工具

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

<!---->

工作中你会使用到 grpcurl 吗?

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

工作中你会使用到 grpcurl 吗?

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

  • get_tenant_detail

<!---->

  • get_tenant_list

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

获取租户详情

工作中你会使用到 grpcurl 吗?

获取租户列表

工作中你会使用到 grpcurl 吗?

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

工作中你会使用到 grpcurl 吗?

  • 效果验证

这个时候,咱们将上述的 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

工作中你会使用到 grpcurl 吗?

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

工作中你会使用到 grpcurl 吗?

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

grpcurl -h

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

至此,本篇内容结束

【欢迎查看历史文章】

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

欢迎点赞,关注,收藏

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

工作中你会使用到 grpcurl 吗?

好了,本次就到这里

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

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

点赞
收藏
评论区
推荐文章
liuzhen007 liuzhen007
4年前
Golang如何解析post请求中的json字符串
目录问题解决问题使用Golang开发服务器,最常用的使用场景之一就是处理各种http请求。那么我们如何使用Golang解析Post请求中的Json字符串呢?今天我们就来通过一个实例了解一下。解决首先,我们需要定义好对应的消息结构,也就是前端请求服务器的API接口。定义接口的话推荐使用工具YAPI编写,支持预
liam liam
2年前
Postman 调试微信支付接口教程,一看就会
前期准备在使用Postman调试微信支付接口之前,你需要做好以下准备:安装客户端应用,或使用网页版;成为;已申请。当你已经具备这三个条件,就可以进入微信支付接口调试之旅了脚本导入方式一:通过fork方式为了帮助商户开发者快速上手,微信官方将调试微信支付接口
Stella981 Stella981
3年前
HTTP协议Header选项解读
1HTTPHeader介绍 相信大家对header并不陌生,在做接口测试的时候经常会用到,那么header到底是什么呢?可以将header看成是一种规范,约定好客户端和服务器能做的一些事情等,http请求和响应中都会包含header,通常我们可以检查为请求头和响应头。header的语法格式是“key”:“value”的形式
Wesley13 Wesley13
3年前
gRPC官方文档(gRPC基础:C++)
文章来自gRPC官方文档中文版(http://doc.oschina.net/grpc?t56831)本教程提供了C程序员如何使用gRPC的指南。通过学习教程中例子,你可以学会如何:在一个.proto文件内定义服务.用protocolbuffer编译器生成服务器和客户端代码.使用gRPC的C
Stella981 Stella981
3年前
SpringBoot HTTP接口 GET请求
1\.普通传参@RequestMapping(path"/{city_id}/{user_id}",methodRequestMethod.GET)publicObjectfindUser(@PathVariable("city_id")StringcityId,
Stella981 Stella981
3年前
Python 接口自动化测试
1\.接口基础知识1.1接口分类接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。(1)webservice接口:走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都要通过工具才能进行调用,测试。(2)httpapi接口:走http协议,通过路径来区分
Stella981 Stella981
3年前
Postman
一,自动化传参在实现接口自动测试的时候,会经常遇到接口参数依赖的问题,例如调取登录接口的时候,需要先获取登录的key值,而每次请求返回的key值又是不一样的,那么这种情况下,要实现接口的自动化,就要用到postman中设置环境变量这个功能了;在postman中,可以利用tests将接口返回的response设置为环境变量,供后续接口使用(类似参数化的
Wesley13 Wesley13
3年前
unittest单元测试框架前言
一.在我们没有学习过python语言的时候领导让我们做接口测试我们都使用工具来做测试,一般常用的如jemeter,postman这些个工具,我来推荐使用postman这个工具来进行接口测试,有的小伙伴们说Fiddler或Charles抓接口,然后进行测试不也成吗?成是成,但是接口测试往往优先于客户端测试并且postman这个工具方便用来模拟异常请求,并
SPI在Java中的实现与应用 | 京东物流技术团队
1SPI的概念APIAPI在我们日常开发工作中是比较直观可以看到的,比如在Spring项目中,我们通常习惯在写service层代码前,添加一个接口层,对于service的调用一般也都是基于接口操作,通过依赖注入,可以使用接口实现类的实例。简单形容就是这样的
API 小达人 API 小达人
1年前
JSON 格式的接口测试流程【Eolink Apikit】
在进行JSON格式的接口测试时,需要使用工具发送HTTP请求并获取响应。测试工具可以是单独的测试框架,如EolinkApikit。测试人员需要根据接口文档和测试用例编写测试脚本,然后运行测试并分析结果,以确保接口的质量和稳定性。当我们后端需要从前端拿到这些JSON数据,我们应该如何测试自己的接口呢?今天就来浅浅探讨一下JSON格式接口测试的流程。
API 小达人 API 小达人
1年前
Eolink Apikit「 零代码」快速发起 RPC 接口自动化测试
RPC(RemoteProcedureCall)远程过程调用,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC的核心思想是将远程服务抽象成一个接口,客户端通过调用这个接口,就可以实现对远程服务的访问。EolinkApikit支持多协议,RPC、DUBBO、HTTP、REST、Websocket、gRPC、TCP、UDP、SOAP、HSF等。零代码快速发起RPC接口自动化测试,可以根据RPC接口文档自动生成测试用例,开发者只需简单修改即可使用。