Truy cập thông số HTTP POST trong Go

Tôi đã gặp phải một vấn đề nhỏ khi cố gắng ĐĂNG lên chương trình phụ trợ Go bằng cách sử dụngAxiosnhưng tôi không thể nhận được các thông số mà tôi đang gửi.

Tôi đã làm điều này:

func handleReq(w http.ResponseWriter, req *http.Request) {
	err := req.ParseForm()
	if err != nil {
		panic(err)
	}
	v := req.Form
	owner := req.Form.Get("owner")
	name := req.Form.Get("name")
    //...
}

nhưng hai thông số tôi đang tìm kiếm không có sẵn. Tại sao?

Hóa ra tôi đã giả sử Axios gửi các tham số bằng cách sử dụngContent-Type:application/x-www-form-urlencodednhưng theo mặc định, nó đang sử dụngContent-Type:application/json.

Lưu ý: bạn có thể cấu hình nó để sử dụngapplication/x-www-form-urlencoded, kiểm trahttps://github.com/axios/axios#using-applicationx-www-form-urlencoded-format

Điều này có nghĩa là để truy cập các thông số, tôi cần giải mã chúng bằng cách sử dụngjson.Decoder.

Đây là một số mã mẫu thực hiện thủ thuật:

type myData struct {
	Owner string
	Name  string
}

func handleAddNewRepo(w http.ResponseWriter, req *http.Request) { decoder := json.NewDecoder(req.Body)

<span style="color:#66d9ef">var</span> <span style="color:#a6e22e">data</span> <span style="color:#a6e22e">myData</span>
<span style="color:#a6e22e">err</span> <span style="color:#f92672">:=</span> <span style="color:#a6e22e">decoder</span>.<span style="color:#a6e22e">Decode</span>(<span style="color:#f92672">&amp;</span><span style="color:#a6e22e">data</span>)
<span style="color:#66d9ef">if</span> <span style="color:#a6e22e">err</span> <span style="color:#f92672">!=</span> <span style="color:#66d9ef">nil</span> {
	panic(<span style="color:#a6e22e">err</span>)
}

<span style="color:#a6e22e">owner</span> <span style="color:#f92672">:=</span> <span style="color:#a6e22e">data</span>.<span style="color:#a6e22e">Owner</span>
<span style="color:#a6e22e">name</span> <span style="color:#f92672">:=</span> <span style="color:#a6e22e">data</span>.<span style="color:#a6e22e">Name</span>
<span style="color:#75715e">//...

}


Các hướng dẫn về go khác: