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