Tech Sheets

net/httpでGETリクエストを投げてみる

最終更新日:2022-05-08

net/httpでGETリクエストを投げるには、次の2ステップで行います

  • リクエストオブジェクトを作る
  • DefaultClientを用いて送信する

まずサンプル全体を見てみましょう。

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	// リクエストを作る
	url := "https://tech.mokelab.com"
	req, err := http.NewRequest(http.MethodGet, url, nil)
	if err != nil {
		fmt.Errorf("Failed to create request : %s", err)
		return
	}

	// 送信する
	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		fmt.Errorf("Failed to send request : %s", err)
		return
	}

	// 結果を文字列にする
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Errorf("Failed to read response body : %s", err)
		return
	}
	fmt.Printf(string(body))
}

リクエストを作る

リクエストを作るにはhttp.NewRequest()を使います。第3引数はBody部分の指定です。今回はGETなのでnilを指定しておきます。

// リクエストを作る
url := "https://tech.mokelab.com"
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
    fmt.Errorf("Failed to create request : %s", err)
    return
}

送信する

先ほど作成したリクエストをサーバーに送信するには、http.DefaultClient.Do(req)を呼びます。

// 送信する
resp, err := http.DefaultClient.Do(req)
if err != nil {
	fmt.Errorf("Failed to send request : %s", err)
	return
}

// 結果を文字列にする
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
	fmt.Errorf("Failed to read response body : %s", err)
	return
}
fmt.Printf(string(body))

一覧に戻る