登录
首页 >  Golang >  Go问答

如何在 Go 语言中实现发布请求功能

来源:stackoverflow

时间:2024-02-11 10:30:26 164浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《如何在 Go 语言中实现发布请求功能》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

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

我有一些像这样的Python代码 数据 = { “姓名”:“弗兰克”, “年龄”:21, “国籍”:[“英国”], }

r = requests.post('somesite', json=data) 我如何在 GOLANG 上发出类似的 POST 请求,我尝试使用“国籍”:[“英国”] 但我在 [] 上有一些错误 我尝试使用 map[string]string 但 ofc 它不起作用 也许我可以使用一些结构来解决我的问题


正确答案


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

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

地图[keytype]valuetype

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

您的正文同时具有字符串和切片类型,因此 valuetype 比 string 更好。

也许您应该使用 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))
}

好了,本文到此结束,带大家了解了《如何在 Go 语言中实现发布请求功能》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>