如何在请求中转义正斜杠以使url路由器将其视为uri参数的一部分?

时间:2018-08-01 13:20:56

标签: 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或任何其他路由器来实现?

2 个答案:

答案 0 :(得分:0)

您的问题:

  

是否可以使用大猩猩/多路复用器或任何其他路由器来实现?

是的,可以使用gorilla/mux。您发布的代码没有错。

错误为page not found,这意味着您传递的网址未在多路复用器路由器中注册。

在浏览器上通过http://localhost:8080/v1/data/hello world。 route将在定义的网址之后捕获任何参数。还可以在处理程序请求结构中打印捕获的URL路径,以查看请求的URL是什么:

fmt.Println(r.URL.Path)
uriP := mux.Vars(r)
param := uriP["param"]

答案 1 :(得分:0)

您应该添加regexp,bc默认regexp匹配到/?符号为止。

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