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

WBOY
Lepaskan: 2024-02-08 21:03:13
ke hadapan
1097 orang telah melayarinya

如何在 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

Salin selepas log masuk


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()}
Salin selepas log masuk

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!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!