2021年03月19日(金) [長年日記]
■ [go] http.Clientのサンプル
http.Clientを使うサンプルをメモ。GitHubのリポジトリ情報取得のAPIにアクセスしてみる。
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
)
func main() {
// http.Requestのインスタンスreqを作って
req, err := http.NewRequest(
"GET",
"https://api.github.com/repos/kenichiice/test-unit-runner-junitxml",
nil)
if err != nil {
log.Fatal("failed to create HTTP request")
}
// reqにHTTPヘッダを追加して
req.Header.Set("Accept", "application/vnd.github.v3+json")
// http.Clientを使ってreqの内容を送信する
client := http.Client{}
resp, err := client.Do(req)
if err != nil {
log.Fatal("failed to send HTTP request")
}
// HTTP応答のBodyを読み取る場合はCloseが必要
defer resp.Body.Close()
// HTTP応答のステータスコードの確認
if resp.StatusCode != http.StatusOK {
log.Fatalf("HTTP status code: %d", resp.StatusCode)
}
// HTTP応答のBodyのJSONを読み取る
var repo struct {
Description string
}
if err := json.NewDecoder(resp.Body).Decode(&repo); err != nil {
log.Fatal("failed to decode HTTP response")
}
fmt.Println(repo.Description)
}
[ツッコミを入れる]