如何使用 http.HandleFunc with slugs.



我正在做一个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 文档中阅读有关使用尾部斜杠的详细信息。

游乐场示例

相关内容

  • 没有找到相关文章

最新更新