Я работаю с конкретными с , обрабатывая запросы GRPC. Я пытаюсь передать мета из моего запроса GRPC в контекст, основанный на этом примере кода: https://github.com/go-kit/kit/blob/master/auth/jwt/transport.go#L47.Ошибки при передаче метаданных в контексте в golang
(только в случае, contextKey объяснение можно назвать здесь: https://medium.com/@matryer/context-keys-in-go-5312346a868d#.vn10llkse):
Ниже мой код:
type contextKey string
func (c contextKey) String() string {
return string(c)
}
var Headers := metadata.New(map[string]string{"auth":"", "abc": "", "xyz" : ""})
func ToGRPCContext() grpctransport.RequestFunc {
return func(ctx context.Context, md *metadata.MD) context.Context {
for _, header := range Headers {
val, ok := (*md)[header]
if !ok {
return ctx
}
if len(val) > 0 {
ctx = context.WithValue(ctx, contextKey(header), val)
}
}
return ctx
}
}
Я пытаюсь читать поля метаданных (заголовки) и передать его контекст.
Я получаю следующие ошибки. cannot use header (type []string) as type string in map index
и cannot convert header (type []string) to type contextKey
. Я исправил вышеуказанные ошибки, обратившись к индексу и сделав что-то вроде этого val, ok := (*md)[header[0]]
. Однако я хочу передать все элементы карты в контекст.
Любые предложения по решению этой проблемы?
Если заголовок имеет несколько значений, как сделать вы хотите передать их? Если вы хотите добавить их отдельно, просто используйте цикл for. – JimB