我想发送一个 url,例如“Documents/folder1/folder2/file.txt”,或者它可以有较少的斜杠,例如“Documents/folder1/file.txt”,我想将此 url 作为路径传递参数,例如router.HandleFunc("/myproject/v1/image/{url}", GetImage)
但是在执行此操作时,它会转到 ex 的 url:/myproject/v1/image/Documents/folder1/file.txt,但找不到它,因此返回 404。
我正在使用 gorilla 复用器:
func main(){
router := mux.NewRouter().StrictSlash(true)
router.HandleFunc("/myproject/v1/image/{url}", GetImage)
}
我以为它来自 strictslash,但当我将它设置为 false 时,我仍然收到 404
最佳答案
StrictSlashes
与单个尾部斜线有关,与斜线是否在参数内部匹配(它们不是)无关。您需要使用 PathPrefix
:
const (
imagesPrefix = "/myproject/v1/image/" // note no {url}
)
func main() {
router := mux.NewRouter()
router.PathPrefix(imagesPrefix).Handler(
http.StripPrefix(imagesPrefix, GetHandler),
)
}
func GetImage (w http.ResponseWriter, r *http.Request) {
// r.URL.Path should contain the image path.
}
关于go - 如何在 GO 中将包含斜杠的 url 作为路径参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40502111/