我们不能在大猩猩子路由器路径前缀中包含变量吗?

我正在尝试将子路由器添加到我的路由器代码中:


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。我是不是遗漏了什么,或者这是不可能的?


慕的地8271018
浏览 253回答 1
1回答

吃鸡游戏

好的所以我昨晚在梦中找到了解决方案哈哈基本上是以下前缀的问题:managementRouter := baseRouter.PathPrefix("/managing/{id}").Subrouter()是路由器无法知道该id字段在哪里停止。因此,当我们使用例如此 url : 访问端点时/api/v1/managing/627e6f7e05db3552970e1164/add-employees,路由器认为该{id}变量是字面上的627e6f7e05db3552970e1164/add-employees并且不匹配它之后的任何路由。所以我找到的解决方案是告诉路由器变量后面是什么。为此,您只需在变量后添加一个斜杠:managementRouter := baseRouter.PathPrefix("/managing/{id}/").Subrouter()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go