我正在做一个Go项目。当我尝试将 slugs 与 http 一起使用时。HandleFunc 我收到"404 页面未找到错误"。当我取出蛞蝓时,我的路由再次工作。
总的来说,我有:
http.HandleFunc("/products/feedback/{slug}", AddFeedbackHandler)
哪些调用:
var AddFeedbackHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request){
w.Write([]byte("ChecksOut"))
})
当我将路径替换为:
http.HandleFunc("/products/feedback", AddFeedbackHandler)
它再次起作用。可能是什么原因造成的?
尝试以下操作:
const feedbackPath = "/products/feedback/" // note trailing slash.
func AddFeedbackHandler(w http.ResponseWriter, r *http.Request) {
var slug string
if strings.HasPrefix(r.URL.Path, feedbackPath) {
slug = r.URL.Path[len(feedbackPath):]
}
fmt.Println("the slug is: ", slug)
w.Write([]byte("ChecksOut"))
}
使用以下代码添加处理程序:
http.HandleFunc(feedbackPath, AddFeedbackHandler)
路径上的尾部斜杠是子树匹配所必需的。您可以在 ServeMux 文档中阅读有关使用尾部斜杠的详细信息。
游乐场示例