Go 如何实施子路由
我想实现这样的路线Go 如何实施子路由,go,gorilla,Go,Gorilla,我想实现这样的路线 user/profile user/cart 用户/产品 目前,我正在这样做 r.HandleFunc("user/signup", signupHandler).Methods("POST") r.HandleFunc("user/signin", signinHandler).Methods("POST") r.HandleFunc("user/profile", profileHandler).Methods("GET") r.HandleFunc("user/cart
user/profile
user/cart
用户/产品
目前,我正在这样做
r.HandleFunc("user/signup", signupHandler).Methods("POST")
r.HandleFunc("user/signin", signinHandler).Methods("POST")
r.HandleFunc("user/profile", profileHandler).Methods("GET")
r.HandleFunc("user/cart", cartHandler).Methods("POST")
r.HandleFunc("user/products", productsHandler).Methods("GET")
正如您所看到的,这些路由以user
开始,因此我如何知道它是user
路由,以便在不同的文件中发送和处理它
我想要像这样的东西
r.HandleFunc("user/", handlerWhichHandelAllTheRequestFromUser)
它应该处理从用户
开始的所有URL
我正在使用mux gorillamux中有一个PathPrefix函数。在这种情况下,您可以使用它来设置路径前缀,即“/user” 示例:- userHandler.go
func makeUserHandler()http.Handler{
//Define all you handlers here
r := mux.NewRouter()
r.HandleFunc("user/signup", signupHandler).Methods("POST")
r.HandleFunc("user/signin", signinHandler).Methods("POST")
r.HandleFunc("user/profile", profileHandler).Methods("GET")
r.HandleFunc("user/cart", cartHandler).Methods("POST")
r.HandleFunc("user/products", productsHandler).Methods("GET")
return r
}
梅因,加油
r := mux.NewRouter()
r.PathPrefix("/user").Handler(makeUserHandler())
请根据您的要求对上述代码进行必要的更改。您可以在mux路由中使用正则表达式:
s.HandleFunc(“/articles/{category}/{id:[0-9]+}”,ArticleHandler)
如果这是gorilla/mux,您可以使用子计算机:userRouter:=r.Path(“/user”).subrouter()
。是的<代码>大猩猩/mux谢谢!如果它是net/http
,那么您发布的代码将完全按照预期工作。stdlib路由器将带有尾随斜杠的路由视为前缀处理程序。那么我如何知道它是哪一个呢?它是注册
或在makeUserHandler
中“登录”?当前缀路径在main.go中匹配时,它将转发到makeUserHandler路由器。从那里,路由器将匹配其路径,即“/signup”或“/signin”,并调用相应的处理程序,即signupHandler或signinHandler。