Go Web服务器无法正确处理/删除/模式

时间:2013-09-03 21:14:53

标签: go

我刚刚玩了一个谷歌GO官方示例Writing Web Applications我试图添加删除页面的功能,但它没有奏效。原因是如果您将"/delete/"作为参数传递给http.HandleFunc()函数,则始终无法找到404 Page。任何其他"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
  6. 问题: "/delete/"模式有什么特殊含义吗?是否有任何技术原因或仅仅是一个错误?

1 个答案:

答案 0 :(得分:2)

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

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


真正的原因是没有检查ListenAndServe的错误结果。旧副本在后台运行,缺少错误处理使其无法接受。浏览器从旧服务器获得结果。