登录
首页 >  Golang >  Go问答

首先运行的中间件

来源:stackoverflow

时间:2024-03-02 10:30:26 318浏览 收藏

本篇文章给大家分享《首先运行的中间件》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

我的主要内容是:

router := mux.newrouter()

    router.pathprefix("/").handlerfunc(func(w http.responsewriter, r *http.request) {
        glog.info("before")
    })

    router.handlefunc("/people", person.getmany).methods("get")
    router.handlefunc("/people/{id}", person.getone).methods("get")
    router.handlefunc("/people/{id}", person.create).methods("post")
    router.handlefunc("/people/{id}", person.delete).methods("delete")

这意味着除了第一个中间件处理程序之外没有任何内容受到影响,因此我尝试创建一个新的路由器来处理日志记录:

mux.NewRouter().PathPrefix("/").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        glog.Info("before")
    })

但是这个新路由器没有被击中,而且我的其他路由也没有被击中。我应该做什么?


解决方案


调用Router.Use注册中间件

示例代码为here

您的代码应该是:

router.Use(func(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        glog.Info("before")
        next.ServeHTTP(w, r)
    })
})

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>