在 Go 的 POST 請求中傳送 JSON 字串
Jay Singh
2023年1月30日
JavaScript Object Notation (JSON) 是 Web 開發中常用的資料傳輸格式。它易於使用和理解。
你可以使用 Go 語言建立 JSON POST
請求,但你需要匯入多個 Go 包。net/HTTP
包包括良好的 HTTP 客戶端和伺服器支援。
Go 中的 JSON
包還提供 JSON 編碼和解碼。
在本教程中,你將學習如何使用 Go 語言執行 JSON POST 請求。在本教程中,你將學習如何使用 Go 語言將 JSON 字串作為 POST 請求傳遞。
在 Go 的 POST 請求中傳送 JSON 字串
下面顯示了一個包含課程和路徑列表的基本 JSON 檔案。
{
"Courses": [
"Golang",
"Python"
],
"Paths": [
"Coding Interviews",
"Data Structure"
]
}
下面的程式碼顯示瞭如何將 USER JSON 物件提交給服務 reqres.in
以構造使用者請求。
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type User struct {
Name string `json:"name"`
Job string `json:"job"`
}
func main(){
user := User{
Name: "Jay Singh",
Job: "Golang Developer",
}
body, _ := json.Marshal(user)
resp, err := http.Post("https://reqres.in/api/users", "application/json", bytes.NewBuffer(body) )
if err != nil {
panic(err)
}
defer resp.Body.Close()
if resp.StatusCode == http.StatusCreated {
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
jsonStr := string(body)
fmt.Println("Response: ", jsonStr)
} else {
fmt.Println("Get failed with error: ", resp.Status)
}
}
輸出:
Response: {
"name":"Jay Singh",
"job":"Golang Developer",
"id":"895",
"createdAt":"2022-04-04T10:46:36.892Z"
}
在 Golang 的 POST 請求中傳送 JSON 字串
這是簡單的 JSON 程式碼。
{
"StudentName": "Jay Singh",
"StudentId" : "192865782",
"StudentGroup": "Computer Science"
}
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type StudentDetails struct {
StudentName string `json:"StudentName"`
StudentId string `json:"StudentId"`
StudentGroup string `json:"StudentGroup"`
}
func main() {
studentDetails := StudentDetails{
StudentName: "Jay Singh",
StudentId: "192865782",
StudentGroup: "Computer Science",
}
body, _ := json.Marshal(studentDetails)
resp, err := http.Post("<https://reqres.in/api/users>", "application/json", bytes.NewBuffer(body))
if err != nil {
panic(err)
}
defer resp.Body.Close()
if resp.StatusCode == http.StatusCreated {
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
jsonStr := string(body)
fmt.Println("Response: ", jsonStr)
} else {
fmt.Println("Get failed with error: ", resp.Status)
}
}
輸出:
Response: {
"StudentName":"Deven Rathore",
"StudentId":"170203065",
"StudentGroup":"Computer Science",
"id":"868",
"createdAt":"2022-04-04T12:35:03.092Z"
}