如何在同一包的 2 个单独文件中拆分 GO Gorilla Mux 路由
How to split GO Gorilla Mux routes in 2 separate files of the same package
我有单独的文件 routes.go(包路由),我在其中存储我所有的路由和处理程序。
但我想把这个文件分成 2 个文件。我想将我的 routes.go 重命名为 main.go 并创建新的附加文件 moduleX.go(包路径)。
我怎样才能做到这一点?
我想将所有路线存储在相同 "package routes".
的多个文件中
package routes
import (
"github.com/gorilla/mux"
"net/http"
"github.com/---/001/models"
"github.com/---/001/sessions"
"github.com/---/001/utils"
"github.com/---/001/middleware"
)
func NewRouter() *mux.Router {
r := mux.NewRouter()
r.HandleFunc("/", middleware.AuthRequired(indexGetHandler)).Methods("GET")
r.HandleFunc("/", middleware.AuthRequired(indexPostHandler)).Methods("POST")
r.HandleFunc("/signup", signupGetHandler).Methods("GET")
r.HandleFunc("/signup", signupPostHandler).Methods("POST")
r.HandleFunc("/signin", signinGetHandler).Methods("GET")
r.HandleFunc("/signin", signinPostHandler).Methods("POST")
r.HandleFunc("/signout", signoutGetHandler).Methods("GET")
r.HandleFunc("/services", middleware.AuthRequired(servicesHandler)).Methods("GET")
fs := http.FileServer(http.Dir("./static/"))
r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", fs))
return r
}
我想将所有“/signup”和“/signin”路由和处理程序移到这个主文件之外。然后以某种方式将它们传递回此 NewRouter 函数。
你可以给我提供一本书或一些在线示例。
您可以使用另一个修改路由器的函数来做到这一点。
//In another file
func addSignHandler(r *mux.Router) {
r.HandleFunc("/signup", signupGetHandler).Methods("GET")
r.HandleFunc("/signup", signupPostHandler).Methods("POST")
r.HandleFunc("/signin", signinGetHandler).Methods("GET")
r.HandleFunc("/signin", signinPostHandler).Methods("POST")
r.HandleFunc("/signout", signoutGetHandler).Methods("GET")
}
并使用它:
func NewRouter() *mux.Router {
r := mux.NewRouter()
r.HandleFunc("/", middleware.AuthRequired(indexGetHandler)).Methods("GET")
r.HandleFunc("/", middleware.AuthRequired(indexPostHandler)).Methods("POST")
addSignHandler(r)
r.HandleFunc("/services", middleware.AuthRequired(servicesHandler)).Methods("GET")
fs := http.FileServer(http.Dir("./static/"))
r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", fs))
return r
}
或者更好的是,您可以重构代码以使其更加一致:
func addMainHandler(r *mux.Router) {
r.HandleFunc("/", middleware.AuthRequired(indexGetHandler)).Methods("GET")
r.HandleFunc("/", middleware.AuthRequired(indexPostHandler)).Methods("POST")
r.HandleFunc("/services", middleware.AuthRequired(servicesHandler)).Methods("GET")
fs := http.FileServer(http.Dir("./static/"))
r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", fs))
}
并将NewRouter
简化为:
func NewRouter() *mux.Router {
r := mux.NewRouter()
addMainHandler(r)
addSignHandler(r)
return r
}
我有单独的文件 routes.go(包路由),我在其中存储我所有的路由和处理程序。 但我想把这个文件分成 2 个文件。我想将我的 routes.go 重命名为 main.go 并创建新的附加文件 moduleX.go(包路径)。 我怎样才能做到这一点? 我想将所有路线存储在相同 "package routes".
的多个文件中package routes
import (
"github.com/gorilla/mux"
"net/http"
"github.com/---/001/models"
"github.com/---/001/sessions"
"github.com/---/001/utils"
"github.com/---/001/middleware"
)
func NewRouter() *mux.Router {
r := mux.NewRouter()
r.HandleFunc("/", middleware.AuthRequired(indexGetHandler)).Methods("GET")
r.HandleFunc("/", middleware.AuthRequired(indexPostHandler)).Methods("POST")
r.HandleFunc("/signup", signupGetHandler).Methods("GET")
r.HandleFunc("/signup", signupPostHandler).Methods("POST")
r.HandleFunc("/signin", signinGetHandler).Methods("GET")
r.HandleFunc("/signin", signinPostHandler).Methods("POST")
r.HandleFunc("/signout", signoutGetHandler).Methods("GET")
r.HandleFunc("/services", middleware.AuthRequired(servicesHandler)).Methods("GET")
fs := http.FileServer(http.Dir("./static/"))
r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", fs))
return r
}
我想将所有“/signup”和“/signin”路由和处理程序移到这个主文件之外。然后以某种方式将它们传递回此 NewRouter 函数。 你可以给我提供一本书或一些在线示例。
您可以使用另一个修改路由器的函数来做到这一点。
//In another file
func addSignHandler(r *mux.Router) {
r.HandleFunc("/signup", signupGetHandler).Methods("GET")
r.HandleFunc("/signup", signupPostHandler).Methods("POST")
r.HandleFunc("/signin", signinGetHandler).Methods("GET")
r.HandleFunc("/signin", signinPostHandler).Methods("POST")
r.HandleFunc("/signout", signoutGetHandler).Methods("GET")
}
并使用它:
func NewRouter() *mux.Router {
r := mux.NewRouter()
r.HandleFunc("/", middleware.AuthRequired(indexGetHandler)).Methods("GET")
r.HandleFunc("/", middleware.AuthRequired(indexPostHandler)).Methods("POST")
addSignHandler(r)
r.HandleFunc("/services", middleware.AuthRequired(servicesHandler)).Methods("GET")
fs := http.FileServer(http.Dir("./static/"))
r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", fs))
return r
}
或者更好的是,您可以重构代码以使其更加一致:
func addMainHandler(r *mux.Router) {
r.HandleFunc("/", middleware.AuthRequired(indexGetHandler)).Methods("GET")
r.HandleFunc("/", middleware.AuthRequired(indexPostHandler)).Methods("POST")
r.HandleFunc("/services", middleware.AuthRequired(servicesHandler)).Methods("GET")
fs := http.FileServer(http.Dir("./static/"))
r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", fs))
}
并将NewRouter
简化为:
func NewRouter() *mux.Router {
r := mux.NewRouter()
addMainHandler(r)
addSignHandler(r)
return r
}