使用Golang获取GRPC请求和响应标头

时间:2019-08-29 08:04:03

标签: go grpc

尝试使用golang语言提取GRPC请求和响应标头。 有什么方法可以提取标题。

1 个答案:

答案 0 :(得分:2)

您可以使用元数据

client-unary:

var header, trailer metadata.MD // variable to store header and trailer
r, err := client.SomeRPC(
    ctx,
    someRequest,
    grpc.Header(&header),    // will retrieve header
    grpc.Trailer(&trailer),  // will retrieve trailer
)

// do something with header and trailer

服务器: 可以使用FromIncomingContext从上下文中检索元数据:

func (s *server) SomeRPC(ctx context.Context, in *pb.SomeRequest) (*pb.SomeResponse, err) {
    md, ok := metadata.FromIncomingContext(ctx)
    // do something with metadata
}

client-stream:

stream, err := client.SomeStreamingRPC(ctx)

// retrieve header
header, err := stream.Header()

// retrieve trailer
trailer := stream.Trailer()

来源: https://github.com/grpc/grpc-go/blob/master/Documentation/grpc-metadata.md#unary-call