http - 如何在请求中转义正斜杠以使 url-routers 将其计为 uri 参数的一部分?

标签 http go routing gorilla

我使用 gorilla/mux 进行路由映射:

router.Handle("/v1/data/{param}", handler)

当我调用 curl http://localhost:8080/v1/data/hello%2Fworld 时,我得到了 404 响应代码。问题是,在我的微服务中,我想将 /v1/data/ 之后的所有内容解释为 param

捕获参数的代码如下:

uriP := mux.Vars(r)
param := uriP["param"]

是否可以使用 gorilla/mux 实现此目的?或任何其他路由器?

最佳答案

您应该添加正则表达式,因为默认的正则表达式匹配直到 /? 符号。

router.Handle("/v1/data/{param:.*}", handler)

关于http - 如何在请求中转义正斜杠以使 url-routers 将其计为 uri 参数的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51634411/

相关文章:

docker - OCI 运行时创建失败 : container_linux. go:345

go - 如何将文件上传到 Google Drive,并使用服务帐户和 Golang 与任何人共享

asp.net-mvc - 根目录的ASP MVC路由

asp.net-mvc - ASP.Net MVC Controller 命名空间数组

python - 如何在 BaseHTTPRequestHandler.do_POST() 中提取 HTTP 消息体?

angularjs - Angular 将所有 $http 请求默认为 GET 请求

angular - 如何保存从服务器返回的值

go - 如何并发优化大型递归任务

redirect - 在 Heroku 上使用 GatsbyJS 进行 301 重定向

javascript - 对 Play REST 服务器的 Angular 2 http 请求