私はGoのhttpパッケージを使用して簡単なWebサーバーを作成しています。私はただ一つのハンドラを登録しています、 "/ requests /"というパスへのリクエストです。WebサーバーがPOSTリクエストを処理していない
これはGETリクエストをうまく処理できますが、POSTリクエストを送信すると、ハンドラは呼び出されず、クライアントは301 Moved Permanentlyレスポンスを取得します。
私はこれを検索しようとしましたが、これは人々がよく直面している問題ではないようです。
私のハンドラは、次のとおりです。
func requestHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello")
}
主な機能:
>> 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
ゴー独自のHTTPクライアントは、同様のレスポンスオブジェクトを返します:
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/requests/", requestHandler)
http.ListenAndServe(":8000", mux)
}
カールは、次のような出力を提供します
&{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'ではありません。 – tkausl