metadata
服务端grpc读取http请求的metadata
package gapi
import (
"golang.org/x/net/context"
"google.golang.org/grpc/metadata"
"log"
"simple_bank/constants"
)
type Metadata struct {
UserAgent string
ClientIP string
}
func (s *Server) extractMetadata(ctx context.Context) *Metadata {
mtdt := &Metadata{}
md, ok := metadata.FromIncomingContext(ctx)
if !ok {
log.Printf("Failed to extract metadata from context")
}
log.Printf("metadata from incoming context: %+v\n", md)
if userAgents := md.Get(constants.GRPCGATEWAYUSERAGENT); len(userAgents) > 0 {
mtdt.UserAgent = userAgents[0]
}
if clientIPs := md.Get(constants.XFORWARDEDFOR); len(clientIPs) > 0 {
mtdt.ClientIP = clientIPs[0]
}
return mtdt
}