英文:
golang: github/gorilla/mux supports regression url path
问题
当我想要URL路径正常工作时,带有尾部的斜杠"/",以及不带尾部的斜杠"/"。
mux1 *mux.Router
mux1.Handle("/example/", ...).Methods("GET")
我希望这两个URL都能正常工作:https://host/api/example/ 和 https://host/api/example
但是
mux1.Handle("/example/?", ...).Methods("GET")
不起作用。
英文:
When I want url path works well, with tail "/", and without tail "/"
mux1 *mux.Router
mux1.Handle("/example/", ...).Methods("GET")
I want these 2 urls works both : https://host/api/example/ and https://host/api/example
But
mux1.Handle("/example/?", ...).Methods("GET")
not work.
答案1
得分: 2
当你在Go中使用mux.Handle
定义路由时,你指定的路径是精确匹配的。这意味着/example/
和/example
是不同的路径,你需要分别为它们定义路由。
一种实现这一点的方法是使用mux.PathPrefix
方法匹配所有以/example
开头的路径,然后使用mux.StripPrefix
将/example
前缀从URL中移除,然后将其传递给你的处理程序。这是一个示例:
mux := mux.NewRouter()
mux.PathPrefix("/example").Handler(http.StripPrefix("/example", myHandler))
// ...
http.ListenAndServe(":8080", mux)
英文:
When you define a route in Go using mux.Handle
, the path you specify is an exact match. This means that /example/
and /example
are different paths, and you need to define a route for both of them separately.
One way to achieve this is to use the mux.PathPrefix
method to match all paths that start with /example
and then use mux.StripPrefix
to remove the /example prefix from the URL before passing it to your handler. Here's an example:
mux := mux.NewRouter()
mux.PathPrefix("/example").Handler(http.StripPrefix("/example", myHandler))
// ...
http.ListenAndServe(":8080", mux)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论