1

我想创建一个 /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")

问题是域/用户确实有效。我可以做这个

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

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

4

2 回答 2

0

您可以将路由器的严格斜杠设置为,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")
于 2014-07-17T13:14:18.310 回答
0

如果将严格斜线设置为 true 对您不起作用,那么您可能必须在路由器中处理没有斜线的路由,而不是使用子路由器:

app.Router.HandleFunc("/user", (&controllers.User{c}).Create).Methods("POST")
app.Router.HandleFunc("/user", (&controllers.User{c}).FindAll).Methods("GET")
于 2014-07-17T16:42:15.250 回答