grpcurl的使用

1、编写proto

2、启动服务

/**
 * @Author: zhangsan
 * @Description:
 * @File:  main
 * @Version: 1.0.0
 * @Date: 2021/5/10 下午5:04
 */

package main

import (
	"google.golang.org/grpc"
	"google.golang.org/grpc/reflection"
	"log"
	"net"
	servers "test/grpcurl/server"
	server "test/grpcurl/src"
)

func main(){
	grpcServe := grpc.NewServer()

	//注册grpcurl服务,否则报错
	reflection.Register(grpcServe)

	server.RegisterServerServer(grpcServe,servers.NewHelloServices())

	listen,e := net.Listen("tcp","127.0.0.1:8080")
	if e != nil{
		log.Fatal(e)
	}

	grpcServe.Serve(listen)
}

启动服务要注册反射服务,否则报错

Failed to list services: server does not support the reflection API
go run main.go

3、安装grpcurl

go get github.com/fullstorydev/grpcurl
go install github.com/fullstorydev/grpcurl/cmd/grpcurl

4、查询服务列表

-> % grpcurl -plaintext   127.0.0.1:8080 list
grpc.reflection.v1alpha.ServerReflection
server.Server

5、查询服务提供的方法

-> % grpcurl -plaintext   127.0.0.1:8080 list server.Server
server.Server.Hello

6、查看更详细的描述

-> % grpcurl -plaintext   127.0.0.1:8080 describe server.Server
server.Server is a service:
service Server {
  rpc Hello ( .server.HelloReq ) returns ( .server.HelloResp );
}

7、获取类型信息

-> % grpcurl -plaintext   127.0.0.1:8080 describe .server.HelloReq            
server.HelloReq is a message:
message HelloReq {
  string name = 1;
}

8、调用接口

-> % grpcurl -plaintext   -d '{"name":"grpcurl"}' 127.0.0.1:8080  server.Server/Hello
{
  "return": "hello"
}

9、参数解析

-plaintext :在使用grpcurl时,需要通过-cert和-key参数设置公钥和私钥文件,链接启用了tls协议的服务。对于没有没用tls协议的grpc服务,通过-plaintext参数忽略tls证书的验证过程。如果是Unix Socket协议,则需要指定-unix参数。

-d :指定参数,如果为@则是从标准输出输入

·10、标准输入输入参数

-> % grpcurl -vv -plaintext   -d @  127.0.0.1:8080  server.Server/Hello  <<EOM
heredoc> {"name":"name"}
heredoc> EOM                                                                                                          

Resolved method descriptor:
rpc Hello ( .server.HelloReq ) returns ( .server.HelloResp );

Request metadata to send:
(empty)

Response headers received:
content-type: application/grpc

Estimated response size: 7 bytes

Response contents:
{
  "return": "hello"
}

Response trailers received:
(empty)
Sent 1 request and received 1 response

要跟上<<EOM 字符串模式

12、grpc其他参数

https://github.com/fullstorydev/grpcurl

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a...Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值