Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menerbitkan JSON asas sebagai data berbilang bahagian/bentuk di Golang

Cara menerbitkan JSON asas sebagai data berbilang bahagian/bentuk di Golang

WBOY
WBOYke hadapan
2024-02-08 21:03:131084semak imbas

如何在 Golang 中将基本 JSON 作为 multipart/form-data 发布

Kandungan soalan

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


Jawapan yang betul


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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam