Rumah >pembangunan bahagian belakang >Golang >Cara menerbitkan JSON asas sebagai data berbilang bahagian/bentuk di Golang
Saya sedang mengusahakan titik akhir yang sangat mengecewakan yang memerlukan saya menggunakan perpustakaan multipart/form-data
作为 post 的内容类型,即使端点实际上只需要表单的任何部分的基本键:值文本。我想使用基本的 golang http
.
Malangnya, sebarang contoh yang saya lihat adalah untuk jenis yang lebih kompleks - fail, imej, video, dsb. Apa yang akhirnya saya masukkan ke dalam badan ialah fungsi map[string] 接口{}
,其中interface{}
是简单的 go 类型 - string、bool、int、float64 等。如何将此接口转换为 newrequest
yang mudah? Terima kasih!
bodyInput := map[string]interface{}{"client_id":"abc123", "you_ok": false, "jwt_token":"psojioajf.sjfiofijw.asdisaoetcetc"} req, err := http.NewRequest(http.MethodPost, "https://my-website.com/endpoint/path", ???) // replace ??? if err != nil { // handle error } req.Header.Set("Content-Type", "multipart/form-data") client := http.Client{} rsp, err := client.Do(req) // deal with the rest
Berdasarkan jawapan iniuntuk soalan yang berbeza, saya dapat mengetahui apa yang saya perlukan. Saya terpaksa menggunakan perpustakaan multipart
dan menetapkan sempadan dengan betul pada pengepala.
import ( "mime/multipart" ) bodyInput := map[string]interface{}{"client_id":"abc123", "you_ok": false, "jwt_token":"psojioajf.sjfiofijw.asdisaoetcetc"} reqBody := new(bytes.Buffer) mp := multipart.NewWriter(reqBody) for k, v := range bodyInput { str, ok := v.(string) if !ok { return fmt.Errorf("converting %v to string", v) } mp.WriteField(k, str) } mp.Close() req, err := http.NewRequest(http.MethodPost, "https://my-website.com/endpoint/path", reqBody) if err != nil { // handle err } req.Header["Content-Type"] = []string{mp.FormDataContentType()}
Atas ialah kandungan terperinci Cara menerbitkan JSON asas sebagai data berbilang bahagian/bentuk di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!