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 ...
随机推荐
- coursera课程视频
#!/usr/bin/env python # coding=utf-8 import urllib import urllib2 import cookielib def setcookie(ena ...
- Java线程池面试
New Thread的弊端 每次new Thread会新建对象,性能差 线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或OOM 缺少更多功能,如更多执行.定期执行.线 ...
- Matlab高级教程_第二篇:一个简单的混编例子
1. 常用的混编是MATLAB和VS两个编辑器之间的混编方式. 2. 因为MATLAB的核是C型语言,因此常见的混编方式是MATLAB和C型语言的混编. 3. 这里介绍一个简单的MATLAB语言混编成 ...
- 视觉SLAM算法框架解析(2) ORB-SLAM
版权声明:本文为博主原创文章,未经博主允许不得转载. ORB-SLAM[1]完全继承了PTAM(http://www.cnblogs.com/zonghaochen/p/8442699.html)的衣 ...
- UIView 的Transform属性以及 CGAffineTransform的使用
什么是Transform? Transform是一个3×3的矩阵,如下图所示: 通过这个矩阵我们可以对一个坐标系统进行缩放,平移,旋转以及这两者的任意组着操作.而且矩阵的操作不具备交换律,即矩阵的操作 ...
- zcat|subprocess.check_all|subprocess.Popen|gzip|readline()
#!/usr/bin/python from subprocess import check_call import subprocess import gzip ''' $ zcat 160121_ ...
- wireshark的过滤命令
1.ip.addr == 192.168.1.1 这种是目标地址和源地址都是 后面指定的IP
- LIS 问题
#include<cstdio> #include<iostream> #include<algorithm> #include<queue> #inc ...
- BZOJ 2318: Spoj4060 game with probability Problem (概率dp)(博弈论)
2318: Spoj4060 game with probability Problem Description Alice和Bob在玩一个游戏.有n个石子在这里,Alice和Bob轮流投掷硬币,如果 ...
- python学习笔记(18)字典和json 的区别 和转换
字典和json 的区别 和转换 前言:字典和json非常像.接下来比较一下两者的异同 先看一下字典的写法: a = {'a':'1', 'b':'2', 'c':'3' } 再看一下json的写法: ...