文档:https://pkg.go.dev/google.golang.org/grpc@v1.36.0/reflection
reflection implements server reflection service.
The service implemented is defined in: https://github.com/grpc/grpc/blob/master/src/proto/grpc/reflection/v1alpha/reflection.proto.
package mainimport ("context""fmt""google.golang.org/grpc""google.golang.org/grpc/reflection"pb "greeter/proto""log""net")type GreetServiceServer struct {}func (s *GreetServiceServer) SayHello(ctx context.Context, in *pb.SayHelloReq) (*pb.SayHelloRsp, error) {log.Println("SayHi begin...")resp := "Hello: " + in.Namereturn &pb.SayHelloRsp{Response: resp}, nil}func main() {lis, err := net.Listen("tcp", fmt.Sprintf("%s:%d", "127.0.0.1", 8888))if err != nil {log.Fatalf("dail failed: %v", err)return}grpcServer := grpc.NewServer()pb.RegisterGreetServiceServer(grpcServer, &GreetServiceServer{})// 注册 grpcurl 的 reflection 服务reflection.Register(grpcServer)log.Println("gRPC server is running...")grpcServer.Serve(lis)}
grpcurl
注册reflection 服务关键功能就是能用grpcurl调用服务
安装
go get github.com/fullstorydev/grpcurl/cmd/grpcurl
grpcurl 对于其它 grpc 服务的感知皆来自 reflection 服务,所以在注册自己的服务之前需要先注册 reflection 服务,否则会提示:
使用
查询服务列表
查询服务提供的方法
查看更详细的描述
获取参数详细信息
调用服务方法
