首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用多个negroni.Wrap()

如何使用多个negroni.Wrap()
EN

Stack Overflow用户
提问于 2018-03-01 00:16:39
回答 1查看 183关注 0票数 1

我有一个实现中间件的问题,我想使用negroni.Wrap函数来验证用户位置,下面是一个调用处理程序的方法:

代码语言:javascript
复制
r.Handle("/users/{userID}", negroni.New(
        negroni.HandlerFunc(validateTokenMiddleware),
        negroni.Wrap(&userLocation),
        negroni.Wrap(&userDetailHandler),
    )).Methods("GET")

&userLocation是包含数据库信息的结构的对象,在这里,当我请求处理程序时,两个wrap一起执行的时间。但是我想先执行&userlocation,如果出现任何错误,那么next wrap不应该被执行,如何解决这个问题。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-03-01 01:55:16

使用具有ServeHttp方法的中间件,该方法将使用userDetailHandler作为中间件内部的接收器来调用。并在中间件中将db结构作为参数传递。你应该使用单层包装。

代码语言:javascript
复制
r.Handle("/users/{userID}", negroni.New(
        negroni.HandlerFunc(validateTokenMiddleware),
        negroni.Wrap(userDetailHandler.Middleware(&userLocation)),
    )).Methods("GET")

func (userDetailHandler *UserDetailHandler)Middleware(res http.ResponseWriter, req *http.Request, userLocation *userLocation){
   // use your serve Http inside this
   userDetailHandler.ServeHttp(res, req)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49034014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档