dsgsgs30201 2019-08-29 08:04
浏览 3079

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

Trying to extract GRPC request and response header using golang language. Is there any way to extract the headers.

  • 写回答

1条回答 默认 最新

  • dpp80346 2019-08-29 08:08
    关注

    You can make use of the metadata

    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
    

    server: Metadata can be retrieved from context using 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()
    

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

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置