首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于公共和私有路由中间件的httprouter和negroni

用于公共和私有路由中间件的httprouter和negroni
EN

Stack Overflow用户
提问于 2019-10-19 02:28:23
回答 1查看 117关注 0票数 1

我很难理解如何在一起使用negroni和httprouter。

我有几条公共路线,比如/api/v1/ping

我有很多私有的路由需要独立的中间件,比如/api/v1/user

如果我想要所有路由的negroni通用中间件,但我想将auth中间件和其他中间件应用于仅用于私有路由,那么我如何设置它呢?

代码语言:javascript
复制
v1.router := httprouter.New()
v1.router.GET("/api/v1/ping", v1.ping)
v1.router.GET("/api/v1/user", v1.getUsers)

n := negroni.Classic()
n.UseHandler(v1.router)

http.ListenAndServe(port, n)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-19 04:14:28

您可以尝试将"Go中的路径前缀中间件“中描述的技术与另一个路由器(gorilla/mux)一起使用net/http/#ServeMux,但对于julienschmidt/httprouter也应该有效:

基于路由前缀指定中间件 这就是魔法发生的地方,也是事情变得混乱的地方。 我发现为路径前缀指定中间件的简单方法是设置第二个muxer (我们在下面使用sirMuxalot变量),它具有我们想要应用中间件的路径前缀,然后传入包装在这些路由的一些中间件中的原始路由器。 这是因为sirMuxalot路由器不会调用中间件包装的路由器,除非我们定义的路径前缀与传入的web请求的路径匹配。 sirMuxalot := http.NewServeMux() sirMuxalot.Handle("/",r) sirMuxalot.Handle("/api/",negroni.New( negroni.HandlerFunc(APIMiddleware),negroni.Wrap(r),)) sirMuxalot.Handle("/dashboard/“),negroni.New( negroni.HandlerFunc(DashboardMiddleware),negroni.Wrap(r),)n := negroni.Classic() n.UseHandler(:=negroni.Classic(:=)n.UseHandler(:=)n.UseHandler(”3000“,n)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58460030

复制
相关文章

相似问题

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