我在Go中編寫了一個webhook,用於解析JSON有效內容。我正在嘗試記錄原始有效負載,然後立即對其進行解碼,但當我嘗試時卻失敗。如果我分別執行這些操作,它們都可以獨立運行。從golang網絡/ http庫中記錄和解碼repsonse主體
有人可以解釋爲什麼我不能使用ioutil.ReadAll
和json.NewDecoder
在一起?
func webhook(w http.ResponseWriter, r *http.Request) {
body, _ := ioutil.ReadAll(r.Body)
log.Printf("incoming message - %s", body)
var p payload
decoder := json.NewDecoder(r.Body)
err := decoder.Decode(&p)
if err != nil {
// Returns EOF
log.Printf("invalid payload - %s", err)
}
defer r.Body.Close()
}
「它失敗」究竟意味着什麼?對於json解碼,不要使用已經完全讀取的'r.Body',而是使用'body'。 – zerkms