В Go я хочу установить некоторые заголовки ответов из моей реализации обработчика rpc. В частности, я хочу установить некоторые заголовки, относящиеся к управлению кешем.
Однако, когда rpc определяется как унарный ответ, сигнатура метода, сгенерированная протоколом, включает только контекст запроса и сообщение запроса. Это контрастирует с кодом, сгенерированным из потокового ответа, который включает сообщение запроса и grpc.ServerStream
.
Вот пример интерфейса, созданного протоколом:
type CmsServer interface {
GetPost(context.Context, *PostRequest) (*Post, error)
GetPosts(*GetPostsOptions, Cms_GetPostsServer) error
}
В этом примере GetPosts
включает параметр Cms_GetPostsServer
, который представляет собой grpc.ServerStream
, который, по-видимому, включает методы для установки пользовательских заголовков ответов https://godoc.org/google.golang.org/grpc#ServerStream (я еще не пробовал это сделать, поправьте меня, если это не так).
Между тем, GetPost
, похоже, не имеет возможности установить заголовки ответа, просто взглянув на сигнатуру метода (context.Context - это только контекст запроса, а не контекст ответа). Итак, как мне установить собственные заголовки ответа для унарного ответа?
CallOptions
в конце (opts ...grpc.CallOption
). - person JimB   schedule 06.02.2018(opts ...grpc.CallOption)
в клиентских методах, но не в серверных. - person thurt   schedule 06.02.2018