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))
    
