我正在使用大猩猩,我发现大猩猩路由器无法解析两条路由。我在每个URL的末尾使用尾部斜杠。请考虑以下路由表:
router := mux.NewRouter()
baseUri, _ := stringFormatter.Format("/api/{0}", apiVersion)
// function resource
router.HandleFunc(baseUri + "/function/", webApiContext.GetAllFunctions).Methods("GET")
router.HandleFunc(baseUri + "/function/find/", webApiContext.FindFunctions).Methods("GET").Queries("query", "{query}")
router.HandleFunc(baseUri + "/function/{id}/", webApiContext.GetFunctionById).Methods("GET")
router.HandleFunc(baseUri + "/function/{id}/body/", webApiContext.GetFunctionBodyById).Methods("GET")
router.HandleFunc(baseUri + "/function/", webApiContext.CreateFunction).Methods("POST")
router.HandleFunc(baseUri + "/function/{id}/", webApiContext.UpdateFunction).Methods("PUT")
router.HandleFunc(baseUri + "/function/{id}/", webApiContext.DeleteFunction).Methods("DELETE")
大猩猩无法将这两条路线分开GET /function/{id}/和GET /function/find/?query={query}。如果我在按id获取函数上方放置一个查找方法,则通过id URL查找查找和获取函数的处理程序调用。
这可以通过从这些URL之一中删除尾部斜杠来解决,即用于查找URL声明。但是我必须使用StrictSlash(true)函数,这使得无法将该黑客与URL声明一起使用。
您能否通过正确的URL声明来帮助解决问题。
肥皂起泡泡
相关分类