具有相似路径的 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)