使用 Go 使用 JSON 文件发出 POST 请求
Using Go to make a POST request using a JSON file
我是 Go 的新手,四处搜索这个问题但没有找到任何东西,所以如果这是我错过的重复问题,我深表歉意。
我需要使用 Go 发送 POST 请求,并让正文来自 JSON 文件。下面是我用作起点的 https://golangtutorial.dev/tips/http-post-json-go/ 代码的修改版本。
我想我可以用我拉入的 JSON 文件替换 jsonData
var 但我只是想知道这是否是正确的方法以及如何最好地进行这样做。谢谢!
package main
import (
"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)
}
要post一个文件,使用opened文件作为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)
注意:无论您想要通过 http 协议 post 什么(文字、文件、图像,甚至视频等),实际上您都是 post 字节流。这意味着您应该将任何您想要 post 的内容视为 二进制字节数组 .
在你的情况下,你应该首先打开你想要 post 的文件,然后创建一个指向你的文件的 io.Reader 类型的实例。简单代码如下:
f, _ := os.Open("./my-file")
http.Post("https://example.com/api","application/json",f)
我是 Go 的新手,四处搜索这个问题但没有找到任何东西,所以如果这是我错过的重复问题,我深表歉意。
我需要使用 Go 发送 POST 请求,并让正文来自 JSON 文件。下面是我用作起点的 https://golangtutorial.dev/tips/http-post-json-go/ 代码的修改版本。
我想我可以用我拉入的 JSON 文件替换 jsonData
var 但我只是想知道这是否是正确的方法以及如何最好地进行这样做。谢谢!
package main
import (
"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)
}
要post一个文件,使用opened文件作为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)
注意:无论您想要通过 http 协议 post 什么(文字、文件、图像,甚至视频等),实际上您都是 post 字节流。这意味着您应该将任何您想要 post 的内容视为 二进制字节数组 .
在你的情况下,你应该首先打开你想要 post 的文件,然后创建一个指向你的文件的 io.Reader 类型的实例。简单代码如下:
f, _ := os.Open("./my-file")
http.Post("https://example.com/api","application/json",f)