grpc调试工具
grpcurl 和 grpcui 都是调试grpc的利器,前者用于命令行,类似curl工具;后者是以web的形式进行调试的,类似postman工具。
有了这两款工具,我们不用写任何客户端代码,也能方便的调试接口数据。
这两款工具的作者是同一人:http://github.com/fullstorydev 。
grpcurl
根据官方 README.md 文档安装即可。
export GOPROXY=https://mirrors.aliyun.com/goproxy/
go get github.com/fullstorydev/grpcurl
go install github.com/fullstorydev/grpcurl/cmd/grpcurl
这时,在 $GOPATH/bin 目录下,生成一个 grpcurl 可执行文件。我们可以复制到 /usr/local/bin/ 下:
# mac
sudo cp `go env|grep 'GOPATH'|sed -e 's/GOPATH="//' -e 's/"//'`/bin/grpcurl /usr/local/bin/
chmod +x /usr/local/bin/grpcurl
执行个命令,验证下:
$ grpcurl -version
grpcurl 1.3.2
输出了版本号表示安装成功了。
示例
下面这个GetMobileArea方法可以返回手机归属地信息,其中GRPC服务端地址:127.0.0.1:8105。我们测试一下:
$ grpcurl -plaintext -d '{"PhoneNum":"13523456666"}' 127.0.0.1:8105 Ys.Pb.ChituSms.ChituSmsServ/GetMobileArea
{
"status": {
"logid": "1233268494511693824"
},
"data": {
"PhoneNum": "13523456666",
"Province": "河南",
"City": "郑州",
"ZipCode": "450000",
"AreaZone": "0371",
"CardType": "中国移动"
}
}
-d表示传参,Ys.Pb.ChituSms.ChituSmsServ/GetMobileArea分别表示命名空间+service名称+方法名。
如果提示:
Failed to compute set of methods to expose: server does not support the reflection API
这种情况下,加个反射就可以了,在 main.go 新增如下代码即可:
//注册反射
reflection.Register(s)
再运行一次就行了。
grpcui
安装方法和grpcurl一样:
export GOPROXY=https://mirrors.aliyun.com/goproxy/
go get github.com/fullstorydev/grpcui
go install github.com/fullstorydev/grpcui/cmd/grpcui
# mac
sudo cp `go env|grep 'GOPATH'|sed -e 's/GOPATH="//' -e 's/"//'`/bin/grpcui /usr/local/bin/
chmod +x /usr/local/bin/grpcui
$ grpcui -version
grpcui dev build <no version set>
示例
下面以一个测试的grpc项目为例,假设业务端口号:8105。同样需要在 main.go 新增如下代码:
//注册反射
reflection.Register(s)
然后命令行运行工具:
$ grpcui -plaintext 127.0.0.1:8105
gRPC Web UI available at http://127.0.0.1:55984/
在浏览器中访问:http://127.0.0.1:55984/

到这,我们看到 Service name、Method name 都出来了,传输参数直接在页面上进行操作即可。
参考资料
1、Go gRPC 调试工具
https://studygolang.com/articles/24551?fr=sidebar
2、fullstorydev/grpcui: An interactive web UI for gRPC, along the lines of postman
https://github.com/fullstorydev/grpcui
grpc调试工具的更多相关文章
- Golang gRPC调试工具
目录 Golang gRPC调试工具 1. 命令行工具 grpcurl 1.1 安装 1.2 验证 1.3 注册反射 1.4 使用示例 2. web调试工具grpcui 2.1 安装 2.2 验证 2 ...
- [系列] Go gRPC 调试工具
目录 概述 写一个 gRPC API grpcui 使用 go-gin-api 系列文章 概述 最近这段时间工作挺忙的,发现已经 3 周没更文了... 感谢你们还在,今天给大家分享一款 gRPC 的调 ...
- Go gRPC 调试工具
概述 最近这段时间工作挺忙的,发现已经 3 周没更文了... 感谢你们还在,今天给大家分享一款 gRPC 的调试工具. 进入正题. 当我们在写 HTTP 接口的时候,使用的是 Postman 进行接口 ...
- 【gRPC】如何便捷的调试gRPC程序
前言 gRPC是一款广泛应用的rpc框架,因为基于C/S架构,服务启动之后,需要编写对应的客户端才能调用,调试起来相对麻烦一些,这里主要介绍一下如何通过swagger-ui来调试grpc服务. grp ...
- Golang/Python/PHP带你彻底学会gRPC
目录 一.gRPC是什么? 二.Protocol Buffers是什么? 三.需求:开发健身房服务 四.最佳实践 Golang 1. 安装protoc工具 2. 安装protoc-gen-go 3. ...
- go语言周边
博主收藏的go语言资料,分享一波~~~ 官网 https://golang.org/ (被墙) 镜像: http://docscn.studygolang.com/ 下载镜像: https://gom ...
- .NetCore|.Net6 gRPC服务开发及本地调试
前言 最近在项目中实装应用了gRPC技术,本着能把技术描述出来给别人能看的懂的思想及作为自己学习笔记的心态编写了此文.因为在实际项目中是webApi接口和gRPC接口使用在同一项目服务中,所以本文的例 ...
- Go微服务实战 - 用户服务开发(gRPC+Protocol Buffer)
概要 用户服务基本是每个互联网产品里必备的一个服务了,因为没有用户基本是什么也干不了.所以他的重要性不言而喻.本文主要介绍下如何开发一个用户微服务,以及他的详细开发流程. 目录 Go微服务实战 - 从 ...
- 发布:.NET开发人员必备的可视化调试工具(你值的拥有)
1:如何使用 1:点击下载:.NET可视化调试工具 (更新于2016-12-29 19:11:00) (终于彻底兼容了部分VS环境下无法使用的问题) 2:解压RAR后执行:CYQ.VisualierS ...
随机推荐
- react webpack配置
- Python语言学习前提:Pycharm的使用
一.Pycharm的使用 1.点击Pycharm的图标 2.点击首页Create New Project > 在弹出的页面点击Pure Python 3.选择项目文件存放的位置,选择完成之后点击 ...
- Different Gene Frequencies in the Two Sexes
I.7 Different Gene Frequencies in the Two Sexes 假设存在一种基因仅在第一代亲代的不同性别之间的概率有区别,比如,A 在male中频率是Pm,a是(1-P ...
- 字符串常用方法总结与StringBuffer基础
字符串 基本特性 final:字符串被修饰为final,是不能被继承的. immutable:字符串是不可改变的,例如创建了一个字符串对象,就不可改变它,即不能进行增删查改其中的字符.一旦创建好这个字 ...
- Cobbler_自动装系统
Cobbler —自动装系统的操作步骤 Cobbler是一款自动化操作系统安装的实现,与PXE安装系统的区别就是可以同时部署多个版本的系统,而PXE只能选择一种系统. Cobbler 的安装 # 在一 ...
- Python_运维中常用的20个库和模块
1.psutil是一个跨平台库(https://github.com/giampaolo/psutil)能够实现获取系统运行的进程和系统利用率(内存,CPU,磁盘,网络等),主要用于系统监控,分析和系 ...
- 分享几个4412开发板新录制的视频,不是VIP也能看
如果能点个赞就更好啦 iTOP4412开发板介绍https://www.bilibili.com/video/av74453392 iTOP4412开发板系统编程前言https://www.bilib ...
- spring security记录
4版本 登录跳转 自定义自己的成功失败handler 生成session后 set-cookie响应头用js取不到? https://github.com/axios/axios/issues/295 ...
- 吴裕雄--天生自然python机器学习:基于支持向量机SVM的手写数字识别
from numpy import * def img2vector(filename): returnVect = zeros((1,1024)) fr = open(filename) for i ...
- spring cloud关于feign client的调用对象列表参数、设置header参数、多环境动态参数试配
spring cloud关于feign client的调用 1.有些场景接口参数需要传对象列表参数 2.有些场景接口设置设置权限等约定header参数 3.有些场景虽然用的是feign调用,但并不会走 ...