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)
}