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

使用 Go 使用 JSON 文件发出 POST 请求

使用 Go 使用 JSON 文件发出 POST 请求

Go
一只萌萌小番薯 2022-11-08 10:45:55
我对 Go 很陌生,四处寻找这个问题,但没有找到任何东西,所以如果这是我错过的重复,我深表歉意。我需要使用 Go 发送一个 POST 请求,并让正文来自 JSON 文件。下面是来自https://golangtutorial.dev/tips/http-post-json-go/的代码的修改版本,我将其用作起点。我在想我可以jsonData用我拉入的 JSON 文件替换 var,但我只是想知道这是否是正确的方法以及如何最好地做到这一点。谢谢!package mainimport (    "bytes"    "fmt"    "io/ioutil"    "net/http")func main() {    httpposturl := "https://reqres.in/api/users"    // I think this is the block I need to alter?:    var jsonData = []byte(`{        "name": "morpheus",        "job": "leader"    }`)    request, error := http.NewRequest("POST", httpposturl, bytes.NewBuffer(jsonData))    request.Header.Set("Content-Type", "application/json; charset=UTF-8")    client := &http.Client{}    response, error := client.Do(request)    if error != nil {        panic(error)    }    defer response.Body.Close()    fmt.Println("response Status:", response.Status)}
查看完整描述

2 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

要发布文件,请使用打开的文件作为 HTTP 请求正文:


f, err := os.Open("file.json")

if err != nil {

    log.Fatal(err)

}

defer f.Close()


httpposturl := "https://reqres.in/api/users"

request, err := http.NewRequest("POST", httpposturl, f)

if err != nil {

    log.Fatal(err)

}

request.Header.Set("Content-Type", "application/json; charset=UTF-8")


response, err := http.DefaultClient.Do(request)

if err != nil {

    log.Fatal(err)

}

defer response.Body.Close()


fmt.Println("response Status:", response.Status)


查看完整回答
反对 回复 2022-11-08
?
largeQ

TA贡献2039条经验 获得超7个赞

注意:无论您想通过 http 协议发布什么(文字、文件、图像甚至视频等),实际上您都发布了字节流。这意味着您应该将要发布的任何内容视为二进制字节数组。


在您的情况下,您应该首先打开要发布的文件,并创建一个指向您的文件的 io.Reader 类型的实例。简单代码如下:


f, _ := os.Open("./my-file")

    

http.Post("https://example.com/api","application/json",f)


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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信