为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
心有法竹 2022-12-26 16:27:22
大家好,有一个关于 POST REQUEST 的问题我有一些像这样的 python 代码 data = { "name": "Frank", "age": 21, "nationality": ["Britan"], }r = requests.post('somesite', json=data) 我如何在 GOLANG 上发出类似的 POST 请求,我尝试使用 "nationality": ["Britan"] 但我尝试使用 [] 时遇到一些错误使用 map[string]string 但它不起作用可能是我可以使用一些结构来解决我的问题
查看完整描述

2 回答

?
慕娘9325324

TA贡献1783条经验 获得超5个赞

也许你应该使用map[string]interface{}


或者您也可以strings.NewReader直接使用发送请求


package main


import (

  "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))

}


查看完整回答
反对 回复 2022-12-26
?
catspeake

TA贡献1111条经验 获得超0个赞

你应该使用 map[string]interface{} 而不是 map[string]string

作为此链接(https://go.dev/blog/maps):

映射[键类型]值类型

其中 KeyType 可以是任何可比较的类型,而 ValueType 可以是任何类型,包括另一个映射!

你的 body 既有 string 又有 slice 类型,所以 ValueType 是 interface{} 比 string 好。


查看完整回答
反对 回复 2022-12-26
  • 2 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号