Go の POST リクエストで JSON 文字列を送信する

Jay Singh 2023年1月30日
  1. Go の POST リクエストで JSON 文字列を送信する
  2. Golang の POST リクエストで JSON 文字列を送信する
Go の POST リクエストで JSON 文字列を送信する

JavaScript Object Notation(JSON)は、Web 開発で一般的に使用されるデータ送信形式です。使い方も理解も簡単です。

Go 言語を使用して JSONPOST リクエストを作成できますが、いくつかの Go パッケージをインポートする必要があります。net/HTTP パッケージには、優れた HTTP クライアントとサーバーのサポートが含まれています。

Go の JSON パッケージは、JSON のエンコードとデコードも提供します。

このチュートリアルでは、Go 言語を使用して JSONPOST リクエストを実行する方法を学習します。このチュートリアルでは、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"
}