golang使用mux及其中间件过滤路由

我在上一篇文章中解决了如何在请求与响应之间做请求处理,在这里继续向后延伸。

在我们的项目中,并不是所有的路由都需要通过认证后才可以访问,就比如登录,注册之类的页面,用户是不需要登录即可访问的。

当我们在脱离使用框架后,我们要做的,将不仅仅是让路由访问成功,我们需要做的更多。我们需要将要认证才可以访问的路由,以及不需要认证也可以访问的路由区分开。

那么,该如何做呢?

github.com/gorilla/mux 中有一个子路由(SubRouter)的方法,刚好可以解决这类问题

func main() {
    r := mux.NewRouter().StrictSlash(false)

    // 不经过中间件处理
        r.HandleFunc("/blog", blog)
        r.HandleFunc("/pricing", pricing)

    // 不经过中间件处理
        dash := r.PathPrefix("/dashboard").Subrouter()
        dash.HandleFunc("/", dashboardIndex)
        dash.HandleFunc("/things", dashboardThings)
        dash.HandleFunc("/things/compress", dashboardCompressAllTheThings)

    // 使用BeforeAction中间件处理
        api := r.PathPrefix("/api").Subrouter()
        api.HandleFunc("/things", apiThings)
    api.HandleFunc("/things/compress", apiCompressAllTheThings)
    api.Use(BeforeAction)

        http.ListenAndServe(":3000", r)
}

你可能感兴趣的:(golang,golang,中间件,mux)