我想发送一个网址,例如" Documents / folder1 / folder2 / file.txt"或者它可以有更少的斜杠,例如" Documents / folder1 / file.txt",我想将此url作为路径参数传递,例如router.HandleFunc("/myproject/v1/image/{url}", GetImage)
但在执行此操作时,它会转到ex:/myproject/v1/image/Documents/folder1/file.txt的url,但它找不到它,因此返回404.
我正在使用gorilla mux:
func main(){
router := mux.NewRouter().StrictSlash(true)
router.HandleFunc("/myproject/v1/image/{url}", GetImage)
}
我认为这是严格的,但是当我把它设置为假时,我仍然会得到404
答案 0 :(得分:0)
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.
}