这是我参与「第五届青训营 」笔记创作活动的第5天,今天我学习了go语言如何使用grpc,还顺带介绍一下如何使用postman调试grpc api。
postman调试grpc api
昨天成功启动了一个grpc server,那么我们如何简单的测试一个server呢?我们都知道测试http请求可以通过浏览器,但是浏览器并不支持发送grpc。另一个比较有名的http客户端是postman。在比较新版本的postman中已经集成了对grpc api的调试功能。
1. 创建api
首先先创建一个api,然后将其改为合适的名字
2.导入proto文件
点击Definition文件,看到如下方界面,点击Author Definition from scratch
选择Protobuf3,点击Create Definition
将proto文件贴进去,点击save
3.创建request
点击new
点击grpc Request
点击save,并新建一个空collection来保存
4.填写参数并自动生成example
选择我们创建的API,从中选择一个函数
点击Generate Example Message可以自动生成符合类型要求的mock数据,然后点击invoke发送
收到返回的结果,说明api是可用且正常的
构建grpc Client
创建一个Client需要两步,连接server和发送请求接受响应。
我们来看一个例子
- grpc.Dial()函数构建一个与服务的连接
- c := pb.NewGreeterClient(conn) 创建一个客户端
- ctx, cancel := context 创建一个请求的上下文
- r, err := c.SayHello 发送请求并接受
func main() {
flag.Parse()
// Set up a connection to the server.
conn, err := grpc.Dial(*addr, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
log.Fatalf("did not connect: %v", err)
}
defer conn.Close()
c := pb.NewGreeterClient(conn)
// Contact the server and print out its response.
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
r, err := c.SayHello(ctx, &pb.HelloRequest{Name: *name})
if err != nil {
log.Fatalf("could not greet: %v", err)
}
log.Printf("Greeting: %s", r.GetMessage())
}
相较于服务端,客户端的使用要简单很多,今天的分享就到这里了。