【发布时间】:2017-01-12 09:13:28
【问题描述】:
我正在使用 Go 的 http 包创建一个简单的 Web 服务器。我只注册了一个处理程序,用于对路径“/requests/”的请求。
它可以很好地处理 GET 请求,但是当我发送 POST 请求时,处理程序永远不会被调用,并且客户端会收到 301 Moved Permanently 响应。
我已尝试搜索此内容,但似乎这不是人们通常面临的问题。
我的处理程序是:
func requestHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello")
}
主要功能:
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/requests/", requestHandler)
http.ListenAndServe(":8000", mux)
}
Curl 给出以下输出:
>> curl -i -X POST http://localhost:8000/requests
HTTP/1.1 301 Moved Permanently
Location: /requests/
Date: Thu, 12 Jan 2017 08:51:10 GMT
Content-Length: 0
Content-Type: text/plain; charset=utf-8
Go 自己的 http 客户端返回一个类似的响应对象:
&{301 Moved Permanently 301 HTTP/1.1 1 1 map[Content-Type:[text/plain; charset=utf-8] Location:[/requests/] Date:[Thu, 12 Jan 2017 08:51:58 GMT] Content-Length:[0]] 0x339190 0 [] false false map[] 0xc4200cc0f0 <nil>}
再一次,GET 请求的行为与我期望的一样,并调用处理函数。我需要做一些不同的事情来处理 POST 请求吗?感谢您对此的任何帮助!
【问题讨论】:
-
你的路径是
/requests/,而不是/requests。