我正在尝试将子路由器添加到我的路由器代码中:router := mux.NewRouter()baseRouter := router.PathPrefix("/api/v1").Subrouter()managementRouter := baseRouter.PathPrefix("/managing/{id}").Subrouter()managementRouter.Use(auth.ManagingMiddleware)managementRouter.HandleFunc("/add-employees", management.AddEmployeesToOrganization).Methods("POST")目标是强制客户端id在每次调用managementRouter 函数时给出一个变量。虽然,当我发送这样的请求时:/api/v1/managing/627e6f7e05db3552970e1164/add-employees...我得到一个 404。我是不是遗漏了什么,或者这是不可能的?
1 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
好的所以我昨晚在梦中找到了解决方案哈哈
基本上是以下前缀的问题:
managementRouter := baseRouter.PathPrefix("/managing/{id}").Subrouter()是路由器无法知道该id字段在哪里停止。因此,当我们使用例如此 url : 访问端点时/api/v1/managing/627e6f7e05db3552970e1164/add-employees,路由器认为该{id}变量是字面上的627e6f7e05db3552970e1164/add-employees并且不匹配它之后的任何路由。
所以我找到的解决方案是告诉路由器变量后面是什么。为此,您只需在变量后添加一个斜杠:
managementRouter := baseRouter.PathPrefix("/managing/{id}/").Subrouter()- 1 回答
- 0 关注
- 252 浏览
添加回答
举报
0/150
提交
取消
