Go中使用grpc(二)| 青训营笔记

320 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第5天,今天我学习了go语言如何使用grpc,还顺带介绍一下如何使用postman调试grpc api。

postman调试grpc api

昨天成功启动了一个grpc server,那么我们如何简单的测试一个server呢?我们都知道测试http请求可以通过浏览器,但是浏览器并不支持发送grpc。另一个比较有名的http客户端是postman。在比较新版本的postman中已经集成了对grpc api的调试功能。

1. 创建api

首先先创建一个api,然后将其改为合适的名字 image.png

2.导入proto文件

点击Definition文件,看到如下方界面,点击Author Definition from scratch image.png 选择Protobuf3,点击Create Definition image.png 将proto文件贴进去,点击save image.png

3.创建request

点击new image.png 点击grpc Request image.png 点击save,并新建一个空collection来保存 image.png

4.填写参数并自动生成example

选择我们创建的API,从中选择一个函数 image.png 点击Generate Example Message可以自动生成符合类型要求的mock数据,然后点击invoke发送 image.png 收到返回的结果,说明api是可用且正常的 image.png

构建grpc Client

创建一个Client需要两步,连接server和发送请求接受响应。

我们来看一个例子

  1. grpc.Dial()函数构建一个与服务的连接
  2. c := pb.NewGreeterClient(conn) 创建一个客户端
  3. ctx, cancel := context 创建一个请求的上下文
  4. 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())
}

相较于服务端,客户端的使用要简单很多,今天的分享就到这里了。