Heim >Backend-Entwicklung >Golang >So veröffentlichen Sie grundlegendes JSON als Multipart-/Formulardaten in Golang
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
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!