大猩猩mux subrouter空路径

时间:2014-07-17 12:53:02

标签: go gorilla

我想创建一个/ user子路由器,如下所示

user := app.Router.PathPrefix("/user").Subrouter()
user.HandleFunc("/create", (&controllers.User{c}).Create)
user.HandleFunc("", (&controllers.User{c}).Create).Methods("POST")
user.HandleFunc("", (&controllers.User{c}).FindAll).Methods("GET")
user.HandleFunc("/{id}", (&controllers.User{c}).Update).Methods("PUT")
user.HandleFunc("/{id}", (&controllers.User{c}).Destroy).Methods("DELETE")
user.HandleFunc("/{id}", (&controllers.User{c}).FindOne).Methods("GET")

问题是域/用户doenst工作。我能做到这一点

user.HandleFunc("/", (&controllers.User{c}).Create).Methods("POST")

但它只匹配域/用户/ 任何想法如何解决这个

2 个答案:

答案 0 :(得分:0)

您可以将路由器的strict slash设置为true,以便/domain/user重定向到/domain/user/

你需要在顶部:

app.Router.StrictSlash(true)

并将路线设置为:

user.HandleFunc("/", (&controllers.User{c}).Create).Methods("POST")
user.HandleFunc("/", (&controllers.User{c}).FindAll).Methods("GET")

答案 1 :(得分:0)

如果将strict slash设置为true对你不起作用,那么你可能必须在路由器中没有斜杠处理路由而不是使用子路由器:

app.Router.HandleFunc("/user", (&controllers.User{c}).Create).Methods("POST")
app.Router.HandleFunc("/user", (&controllers.User{c}).FindAll).Methods("GET")