0

我刚刚玩了一个谷歌 GO 官方示例编写 Web 应用程序我试图添加一个功能来删除页面,但它没有奏效。原因是如果你"/delete/"作为参数传递给http.HandleFunc()函数,你总是得到 404 Page not found。任何其他"foobar"字符串都按预期工作。

简化代码:

package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "%s", r.URL.Path)
}

func main() {
    http.HandleFunc("/hello/", handler)
    //http.HandleFunc("/delete/", handler)
    http.ListenAndServe(":8080", nil)
}

重现步骤:

  1. http://localhost:8080/hello/world从浏览器编译和调用
  2. 输出是/hello/world
  3. 现在评论http.HandleFunc("/hello/", handler)和取消评论http.HandleFunc("/delete/", handler)
  4. http://localhost:8080/delete/world从浏览器编译和调用
  5. 结果是404 page not found,预期的/delete/world

问:"/delete/" pattern 有什么特殊含义吗?有什么技术原因还是只是一个错误?

4

1 回答 1

2

这在这里工作得很好,它不可能在一种情况下工作而不是另一种情况。您只是在更改两行之间的"hello"字符串。"delete"

我建议更仔细地再试一次。它必须是其他地方的细节。


真正的原因是没有检查ListenAndServe. 一个旧副本在后台运行,并且缺乏错误处理使其不为人知。浏览器正在从旧服务器获取结果。

于 2013-09-03T21:28:26.383 回答