我们不能在大猩猩子路由器路径前缀中包含变量吗?
Can't we include vars in gorilla subrouter pathprefix?
我正在尝试将子路由器添加到我的路由器代码中:
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")
目标是强制客户端在每次调用 managementRouter
时给出一个 id
变量
职能。
虽然,当我发送这样的请求时:
/api/v1/managing/627e6f7e05db3552970e1164/add-employees
...我收到 404。我是漏掉了什么还是根本不可能?
好的所以我昨晚在梦中找到了解决方案哈哈
基本上是以下前缀的问题:
managementRouter := baseRouter.PathPrefix("/managing/{id}").Subrouter()
是路由器无法知道id
字段在哪里停止。因此,当我们使用 url : /api/v1/managing/627e6f7e05db3552970e1164/add-employees
访问端点时,路由器认为 {id}
变量字面意思是 627e6f7e05db3552970e1164/add-employees
并且不匹配其后的任何路由。
所以我找到的解决方案是告诉路由器变量后面是什么。为此,您只需在变量后添加一个斜杠:
managementRouter := baseRouter.PathPrefix("/managing/{id}/").Subrouter()
我正在尝试将子路由器添加到我的路由器代码中:
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")
目标是强制客户端在每次调用 managementRouter
时给出一个 id
变量
职能。
虽然,当我发送这样的请求时:
/api/v1/managing/627e6f7e05db3552970e1164/add-employees
...我收到 404。我是漏掉了什么还是根本不可能?
好的所以我昨晚在梦中找到了解决方案哈哈
基本上是以下前缀的问题:
managementRouter := baseRouter.PathPrefix("/managing/{id}").Subrouter()
是路由器无法知道id
字段在哪里停止。因此,当我们使用 url : /api/v1/managing/627e6f7e05db3552970e1164/add-employees
访问端点时,路由器认为 {id}
变量字面意思是 627e6f7e05db3552970e1164/add-employees
并且不匹配其后的任何路由。
所以我找到的解决方案是告诉路由器变量后面是什么。为此,您只需在变量后添加一个斜杠:
managementRouter := baseRouter.PathPrefix("/managing/{id}/").Subrouter()