具有相似路径的 Gorilla MUX 路由
Gorilla MUX routing with similar paths
我在我的 golang api 中使用 Gorilla mux 进行路由。我有两条相似的路径:/users/{id}
和 /users/settings
。当我调用 /users/settings 端点时,它被路由到端点 /users/{id}
。我该如何解决这个问题?
router := mux.NewRouter()
router.HandleFunc("/users/{id}", usersController.GetUserDetail).Methods(http.MethodGet)
router.HandleFunc("/users/settings", usersController.GetSettings).Methods(http.MethodGet)
对像 id 这样的路由使用正则表达式 /{id:[0-9]+}
它将匹配数字。
使用解决方案。我切换了顺序,现在我先注册设置。
router.HandleFunc("/users/settings", usersController.GetSettings).Methods(http.MethodGet)
router.HandleFunc("/users/{id}", usersController.GetUserDetail).Methods(http.MethodGet)
我在我的 golang api 中使用 Gorilla mux 进行路由。我有两条相似的路径:/users/{id}
和 /users/settings
。当我调用 /users/settings 端点时,它被路由到端点 /users/{id}
。我该如何解决这个问题?
router := mux.NewRouter()
router.HandleFunc("/users/{id}", usersController.GetUserDetail).Methods(http.MethodGet)
router.HandleFunc("/users/settings", usersController.GetSettings).Methods(http.MethodGet)
对像 id 这样的路由使用正则表达式 /{id:[0-9]+}
它将匹配数字。
使用解决方案
router.HandleFunc("/users/settings", usersController.GetSettings).Methods(http.MethodGet)
router.HandleFunc("/users/{id}", usersController.GetUserDetail).Methods(http.MethodGet)