0Pricing
Go Academy · レッスン

HTTPリクエストの送信

http.NewRequestとhttp.DefaultClientによるGET、POST

「HTTPリクエストの送信」はCoddyKit上の無料Go Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Go Academyコースには全4レッスンが含まれています。

http.Get のショートカット

http.Get(url) は GET リクエストを作成する最も簡単な方法です。必ずレスポンス本文を閉じてください。

resp, err := http.Get("https://api.example.com/users")
if err != nil { return err }
defer resp.Body.Close()

http.DefaultClient

http.Get はパッケージレベルの DefaultClient を使用します。本番環境では、タイムアウトを設定したカスタムクライアントを作成します。

client := &http.Client{Timeout: 10 * time.Second}
resp, err := client.Get(url)

完全な制御のための http.NewRequest

http.NewRequest を使用すると、メソッド、ヘッダー、本文を設定できます。

req, err := http.NewRequestWithContext(ctx, "POST", url, body)
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)

リクエスト本文

io.Reader を通じてリクエスト本文を渡します。JSON ペイロードには、bytes.NewBuffer(data) または strings.NewReader を使用します。

data, _ := json.Marshal(payload)
req, _ := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(data))

レスポンスステータスの確認

必ず HTTP ステータスコードを確認してください。4xx/5xx は、デフォルトでは Go のエラーとして返されません。

if resp.StatusCode != http.StatusOK {
    return fmt.Errorf("unexpected status: %d", resp.StatusCode)
}

JSON レスポンスのデコード

レスポンス本文を最初にすべてメモリへ読み込まないよう、json.Decoder でデコードします。

var result APIResponse
json.NewDecoder(resp.Body).Decode(&result)

クエリパラメーター

url.Values でクエリ文字列を作成し、URL に追加します。

params := url.Values{}
params.Set("page", "1")
params.Set("limit", "20")
reqURL := baseURL + "?" + params.Encode()

Client.Do とカスタムトランスポート

http.DefaultTransport をラップすると、デフォルトの動作を失わずに、リトライ処理、カスタム TLS、プロキシ設定を追加できます。

レスポンス本文は必ず閉じる

レスポンス本文を閉じないと、基盤となる TCP 接続がリークします。エラーレスポンスの場合でも、必ず defer resp.Body.Close() を使用してください。

リダイレクトの追従

デフォルトのクライアントは、最大 10 回までリダイレクトに追従します。client.CheckRedirect を設定して、リダイレクトの追従方法をカスタマイズまたは無効化します。

User-Agent の設定

サーバーログでクライアントを識別できるよう、説明的な User-Agent ヘッダーを設定します。

req.Header.Set("User-Agent", "myapp/1.0 (+https://myapp.com)")

確認問題

HTTP レスポンス本文を必ず閉じる必要があるのはなぜですか。

まとめ:HTTP リクエストの作成

重要なポイント:

  • 必ず resp.Body.Close() を defer します
  • 本番環境では Timeout を設定したカスタム http.Client を作成します
  • コンテキストとカスタムヘッダーには http.NewRequestWithContext を使用します
  • resp.StatusCode を確認します。HTTP エラーは Go のエラーではありません

よくある質問

「HTTPリクエストの送信」レッスンは無料ですか?

はい。「HTTPリクエストの送信」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Go Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Go Academyコースには全4レッスンが含まれています。

「HTTPリクエストの送信」で何を学びますか?

http.NewRequestとhttp.DefaultClientによるGET、POST ブラウザで直接実行するハンズオンコードでGo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Go Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのGo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「HTTPリクエストの送信」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このGo Academyレッスンでコードを書いて実行できますか?

はい。すべてのGo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. HTTPリクエストの送信
  2. タイムアウトとヘッダーの設定
  3. JSONレスポンスのデコード
  4. エラー処理とリトライロジック
← Go Academyに戻る