Heim  >  Artikel  >  Backend-Entwicklung  >  So veröffentlichen Sie grundlegendes JSON als Multipart-/Formulardaten in Golang

So veröffentlichen Sie grundlegendes JSON als Multipart-/Formulardaten in Golang

WBOY
WBOYnach vorne
2024-02-08 21:03:131084Durchsuche

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

Frageninhalt

Ich arbeite an einem sehr frustrierenden Endpunkt, der die Verwendung der multipart/form-data 作为 post 的内容类型,即使端点实际上只需要表单的任何部分的基本键:值文本。我想使用基本的 golang http-Bibliothek erfordert.

Leider beziehen sich alle Beispiele, die ich gesehen habe, auf komplexere Typen – Dateien, Bilder, Videos usw. Was ich am Ende in den Körper einführe, ist das, was eine einfache map[string] 接口{},其中interface{} 是简单的 go 类型 - string、bool、int、float64 等。如何将此接口转换为 newrequest Funktion braucht? Danke!

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


Richtige Antwort


Anhand dieser Antwortauf verschiedene Fragen konnte ich herausfinden, was ich brauchte. Ich musste die multipart-Bibliothek verwenden und die Ränder in der Kopfzeile richtig festlegen.

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()}

Das obige ist der detaillierte Inhalt vonSo veröffentlichen Sie grundlegendes JSON als Multipart-/Formulardaten in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen