[Go] POST リクエストを送信する

作成日: 2020年09月07日

Go で POST リクエストを送信するサンプルコードです。リクエストボディは JSON 形式で送信しています。

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

type RequestBody struct {
    Something string
}

func main() {
    requestBody := &RequestBody{
        Something: "Hello",
    }

    jsonString, err := json.Marshal(requestBody)
    if err != nil {
        panic("Error")
    }

    endpoint := "https://documentroot.org"
    req, err := http.NewRequest("POST", endpoint, bytes.NewBuffer(jsonString))
    if err != nil {
        panic("Error")
    }

    req.Header.Set("Content-Type", "application/json")

    client := new(http.Client)
    resp, err := client.Do(req)
    if err != nil {
        panic("Error")
    }
    defer resp.Body.Close()

    byteArray, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic("Error")
    }

    fmt.Printf("%#v", string(byteArray))
}

説明

  • リクエストボディとなる構造体 RequestBodyjson.Marshal 関数と bytes.NewBuffer 関数を使って作成します。
  • http.NewRequest 関数を使ってリクエストを作成します。
  • リクエストボディを JSON 形式で送信するため、req.Header.Set("Content-Type", "application/json") で Content-Type を指定します。
  • http.Client.Do 関数を使ってリクエストを送信します。
  • ioutil.ReadAll 関数でレスポンスボディを fmt.Printf 関数で全て出力しています。
Go