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