首页 > 其他分享 >Golang GRPC 添加header

Golang GRPC 添加header

时间:2022-11-10 14:13:20浏览次数:38  
标签:string header GRPC extraMetadata Golang grpc func my

Golang GRPC 添加header

创建grpc连接时添加header

使用自建的metadata

添加的headr信息: key: my-header value: "test01"

func main() {
    conn, err := grpc.Dial("localhost:12000", grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithPerRPCCredentials(extraMetadata{MyHeader: "test01"}))
}

type extraMetadata struct {
	MyHeader string `json:"my-header"`
}

func (c extraMetadata) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {
	return map[string]string{
		"my-header": c.MyHeader,
	}, nil
}

func (c extraMetadata) RequireTransportSecurity() bool {
	return false
}

执行方法时添加header

添加的headr信息: key: my-header value: "test01"

使用自建的metadata

func main() {
    conn, err := grpc.Dial("localhost:12000", grpc.WithTransportCredentials(insecure.NewCredentials()))
    c := pb.NewHelloHTTPClient(conn)
    req := &pb.HelloHTTPRequest{Name: "test"}
    res, err := c.SayHello(context.Background(), req, grpc.PerRPCCredentials(extraMetadata{MyHeader: "test01"}))
}

type extraMetadata struct {
	MyHeader string `json:"my-header"`
}

func (c extraMetadata) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {
	return map[string]string{
		"my-header": c.MyHeader,
	}, nil
}

func (c extraMetadata) RequireTransportSecurity() bool {
	return false
}

使用官方的metadata

func main() {
    conn, err := grpc.Dial("localhost:12000", grpc.WithTransportCredentials(insecure.NewCredentials()))
    header := metadata.New(map[string]string{
        "my-header": "test01",
    })
    var ctx = metadata.NewOutgoingContext(context.Background(), header)
    res, err := c.SayHello(ctx, req)
}

标签:string,header,GRPC,extraMetadata,Golang,grpc,func,my
From: https://www.cnblogs.com/-xuan/p/16876840.html

相关文章

  • golang - go文件编码
    必须为utf-8格式win系统一般默认CRLF模式但是如果在linux系统会不支持CRLF模式因此最好使用LF,两个环境都兼容,这样就不会头疼了,不然需要单独转一下 ......
  • grpc的负载均衡
    一.grpc的负载均衡介绍1.官网地址https://github.com/grpc/grpc/blob/master/doc/load-balancing.md2.架构 3.NameResolver(grpc从consul中同步服务信息进行负载均......
  • golang - win10 下载、安装、运行首个go文件
    1.下载运行环境官网地址https://golang.google.cn/dl/ 可以直接下载msi文件夹,双击后会自动安装环境,但作为一个程序员,但是,这种傻瓜式的安装容易带来风险,习惯性的喜......
  • 解决golang报错:imports github.com/go-sql-driver/mysql from implicitly required mo
    这句话的意思是,从隐式的引入模块导入的比如我使用某个第三方包,这个第三方包里面包含了mysql包我在代码里直接使用了这个mysql包,但是在go.mod里没有引入,代码里ide是不会报......
  • 我的Vue之旅 10 Gin重写后端、实现页面详情页 Mysql + Golang + Gin
    第三期·使用Vue3.1+Axios+Golang+Mysql+Gin实现页面详情页使用Gin框架重写后端GinWebFramework(gin-gonic.com)整体代码量相比传统http写法少了30%......
  • golang连接MySQL并导入执行SQL文件
    实现golang连接MySQL数据库导入执行一个sql文件packagetoolsimport("fmt"_"github.com/go-sql-driver/mysql""github.com/jinzhu/gorm""io/iou......
  • Golang数据库生成GORM
    使用如下代码,只支持PGpackagemainimport( "bufio" "fmt" "github.com/jinzhu/gorm" _"github.com/jinzhu/gorm/dialects/postgres" "strings")varFindColum......
  • django-cors-headers实现跨域的方法总结
    django-cors-headers实现跨域的方法总结在setting.py中配置INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.cont......
  • 前后端获取自定义header
    后端获取前端自定义header在跨域中,我们需要在拦截器中放行OPTIONS方法if("OPTIONS".equals(request.getMethod())){returntrue;}前端获取后端自定义header......
  • Golang常用框架
    :Gin、Iris、Beego、Buffalo、Echo、Revel,其中Gin、Beego和Iris较为流行。Iris是目前流行Golang框架中唯一提供MVC支持(实际上Iris使用MVC性能会略有下降)的框架,并且支持依赖......