がリクエストボディを要求し、常に非nilのですが、全く体が存在しない場合、直ちにEOFを返すことを述べています。
はん。ContentLengthの場合、ドキュメントはボディがnilでない場合は0の値は、不明を意味し、クライアントの要求について
を述べています。
だから、あなたは常に内容が何であるかを知るために身体を読み取る必要があるん。ContentLength
r *http.Request
if r.ContentLength == 0 {
//empty body
}
またはEOF
type Input struct {
Name *string `json:"name"`
}
input := new(Input)
if err := json.NewDecoder(r.Body).Decode(input); err.Error() == "EOF" {
//empty body
}
明らかにEOF、 'コンテンツLength'は、クライアントがまたはに設定することはできませんヘッダーです。 – thwd
エラーの文字列値に悩まされないでください。 'io.EOF'を探しているなら' if err == io.EOF'を実行してください。文字列の表示を見ても、信じられないほど壊れやすい。 –