我如何在 golang 中创建这样的发布请求

大家好,有一个关于 POST REQUEST 的问题

我有一些像这样的 python 代码 data = { "name": "Frank", "age": 21, "nationality": ["Britan"], }

r = requests.post('somesite', json=data) 我如何在 GOLANG 上发出类似的 POST 请求,我尝试使用 "nationality": ["Britan"] 但我尝试使用 [] 时遇到一些错误使用 map[string]string 但它不起作用可能是我可以使用一些结构来解决我的问题


心有法竹
浏览 95回答 2
2回答

慕娘9325324

也许你应该使用map[string]interface{}或者您也可以strings.NewReader直接使用发送请求package mainimport (  "fmt"  "strings"  "net/http"  "io/ioutil")func main() {  url := "http://localhost:8080"  method := "POST"  payload := strings.NewReader(`{    "name": "Flank",    "age": 21,    "nationality": ["Britan"]}`)  client := &http.Client {  }  req, err := http.NewRequest(method, url, payload)  if err != nil {    fmt.Println(err)    return  }  req.Header.Add("Content-Type", "application/json")  res, err := client.Do(req)  if err != nil {    fmt.Println(err)    return  }  defer res.Body.Close()  body, err := ioutil.ReadAll(res.Body)  if err != nil {    fmt.Println(err)    return  }  fmt.Println(string(body))}

catspeake

你应该使用 map[string]interface{} 而不是 map[string]string作为此链接(https://go.dev/blog/maps):映射[键类型]值类型其中 KeyType 可以是任何可比较的类型,而 ValueType 可以是任何类型,包括另一个映射!你的 body 既有 string 又有 slice 类型,所以 ValueType 是 interface{} 比 string 好。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go