go-micro wrappers的问题
如文档里提到的:
这里的server.Request
参数除了能获取服务名、方法名外,并不能获取Header
和Body
的数据,作为一个中间件使用,怎样才能拦截到http数据?
func logWrapper(fn server.HandlerFunc) server.HandlerFunc {
return func(ctx context.Context, req server.Request, rsp interface{}) error {
fmt.Printf("[%v] server request: %s", time.Now(), req.Endpoint())
fmt.Println(req.Header())//打印结果:map[]
return fn(ctx, req, rsp)
}
}
server.Request
源码是这样的
// Request is a synchronous request interface
type Request interface {
// Service name requested
Service() string
// The action requested
Method() string
// Endpoint name requested
Endpoint() string
// Content type provided
ContentType() string
// Header of the request
Header() map\[string\]string
// Body is the initial decoded value
Body() interface{}
// Read the undecoded request body
Read() (\[\]byte, error)
// The encoded message stream
Codec() codec.Reader
// Indicates whether its a stream
Stream() bool
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)