代码之家  ›  专栏  ›  技术社区  ›  RudziankoÅ­

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

  •  0
  • RudziankoÅ­  · 技术社区  · 6 年前

    我有以下路线图使用 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"]
    

    是否可以使用 大猩猩/mux 或者其他路由器?

    2 回复  |  直到 6 年前
        1
  •  2
  •   RudziankoÅ­    6 年前

    您应该添加regexp,bc default regexp is matching until / ? 符号。

    router.Handle("/v1/data/{param:.*}", handler)
    
        2
  •  0
  •   Himanshu    6 年前

    对于您的问题:

    是否可以使用gorilla/mux或任何其他路由器来实现这一点?

    是的,可以使用 gorilla/mux . 你发布的代码没有任何错误。

    错误是 page not found 这意味着您传递的url没有注册到mux路由器。

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

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