设置GRPC标头响应GO

问题描述

我在golang中使用grpc,并希望将标题设置为这样

Header

我已经尝试了两种方法。首先,我正在使用此answer并可以正常工作,但是标题正在向其密钥添加grpc-Metadata-

result

我的问题是如何删除该词?以及如何生成一些值,例如日期,内容长度,缓存控制等,我是否必须像这样在我的代码中对其进行硬编码?

header := Metadata.New(map[string]string{"Access-Control-Allow-Headers": "X-Requested-With,content-type,Accept,Authorization","Server": "val2"})
grpc.SendHeader(ctx,header)

另一种方法是我正在使用http.Responsewritter。这是我的代码,例如:

main.go

var (
    config *envcfg.Envcfg
    logger *logrus.Logger
    https http.ResponseWriter
)
func main() {
    
--------------------

    g.Go(func() error { return NewGRPCServer(config,logger,https) })
-------------------

}

func NewGRPCServer(config *envcfg.Envcfg,logger *logrus.Logger,https http.ResponseWriter) error {
    // create service handlers each grpc service server
    signupSvc,err := signup.New(config,https)
    if err != nil {
        return err
    }
-----------------------------
    // register grpc service server
    grpcServer := grpc.NewServer()

    supb.RegisterSignServer(grpcServer,signupSvc)

    -------------------------------------------------------
}

api.go:

type Server struct {
    config ConfigStore
    logger Logger
    https http.ResponseWriter
}

func New(config ConfigStore,logger Logger,https http.ResponseWriter) (*Server,error) {
    return &Server{
        config: config,logger: logger,https: https,},nil
}

function.go:

func (s *Server) SplashScreen(ctx context.Context,req *supb.RetrieveRequest,w http.ResponseWriter) (*supb.RetrieveResponse,error){
// do something
}

问题主要是它说signupSVC没有实现如下所示的signServer:

Cannot use 'signupSvc' (type *Server) as type SignServer Type does not implement 'SignServer' need method: SplashScreen(context.Context,*RetrieveRequest) (*RetrieveResponse,error) have method: SplashScreen(ctx context.Context,error) 

放置http.Responsewriter的位置?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)