カテゴリ: Go言語 更新日: 2025/11/04

Go言語のhttp.ResponseWriterとhttp.Requestの仕組みを理解しよう

Go言語のhttp.ResponseWriterとhttp.Requestの仕組みを理解しよう
Go言語のhttp.ResponseWriterとhttp.Requestの仕組みを理解しよう

先生と生徒の会話形式で理解しよう

生徒

「Go言語でWebアプリを作るときに、http.ResponseWriterとhttp.Requestってよく出てきますけど、これは何ですか?」

先生

「http.ResponseWriterはブラウザに返すデータを書き込むための仕組み、http.Requestはブラウザから送られてきたリクエストの情報を取得するための仕組みです。」

生徒

「もう少し具体的にいうとどういうことですか?」

先生

「たとえば、ブラウザが『このページを表示してください』と要求すると、それがRequestに入ります。そして、ResponseWriterにHTMLや文字列を書き込むことでブラウザに返します。」

生徒

「なるほど、Requestが受け取る側で、ResponseWriterが返す側なんですね!」

先生

「そうです。では、実際にコードで確認してみましょう。」

1. ResponseWriterでブラウザに出力する

1. ResponseWriterでブラウザに出力する
1. ResponseWriterでブラウザに出力する

http.ResponseWriterを使うと、ブラウザに文字やHTMLを返すことができます。fmt.Fprintlnを使って簡単に文字列を返せます。


package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "Go言語でWebページを表示しています")
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}
(ブラウザでhttp://localhost:8080にアクセスすると「Go言語でWebページを表示しています」と表示されます)

2. Requestでリクエスト情報を取得する

2. Requestでリクエスト情報を取得する
2. Requestでリクエスト情報を取得する

http.Requestは、ブラウザから送られてきた情報を取得するための構造体です。URLパスやクエリパラメータ、リクエストメソッドなどを取得できます。


func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "リクエストのURL:", r.URL.Path)
    fmt.Fprintln(w, "リクエストメソッド:", r.Method)
}

上記のコードでは、アクセスしたURLのパスとGETやPOSTなどのメソッドをブラウザに表示しています。

3. Queryパラメータを使って動的に処理する

3. Queryパラメータを使って動的に処理する
3. Queryパラメータを使って動的に処理する

Requestのr.URL.Query()を使うと、URLに含まれるクエリパラメータを取得できます。たとえば、?name=太郎と付けてアクセスすると、その値を取得できます。


func handler(w http.ResponseWriter, r *http.Request) {
    name := r.URL.Query().Get("name")
    if name == "" {
        name = "名無し"
    }
    fmt.Fprintf(w, "こんにちは、%sさん!", name)
}

このようにすることで、URLによって表示内容を変える動的なWebページを作ることができます。

4. Requestのヘッダー情報を取得する

4. Requestのヘッダー情報を取得する
4. Requestのヘッダー情報を取得する

Requestにはブラウザの情報やCookieなども含まれています。r.Headerを使うと、ブラウザの種類や送信された情報を確認できます。


func handler(w http.ResponseWriter, r *http.Request) {
    userAgent := r.Header.Get("User-Agent")
    fmt.Fprintf(w, "あなたのブラウザは %s です", userAgent)
}

このようにしてユーザーの環境に合わせた処理を行うことも可能です。

5. ResponseWriterとRequestを使うポイント

5. ResponseWriterとRequestを使うポイント
5. ResponseWriterとRequestを使うポイント
  • ResponseWriterに出力することで、ブラウザに文字列やHTMLを返せる
  • RequestからはURL、メソッド、ヘッダー、クエリパラメータなどを取得できる
  • これらを組み合わせることで、ユーザーのリクエストに応じた柔軟なWebアプリを作れる
  • まずは簡単な文字列の表示から始めて、徐々にリクエスト情報を活用してみる

ResponseWriterとRequestの仕組みを理解すれば、Go言語でWebアプリを作るときの基本的な流れがわかります。初心者でも、少しずつ慣れていくことが大切です。

カテゴリの一覧へ
新着記事
Go言語の関数でエラーハンドリングする基本的な方法
Go言語のスライス・マップ・配列をまとめて比較してみよう!初心者でもわかる使い分けの基本
Go言語の条件分岐の見やすい書き方を徹底解説!初心者でもわかるif文の使い方
Go言語とは何か?初心者向けに特徴・できること・インストール手順までやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.2
Java&Spring記事人気No2
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.3
Java&Spring記事人気No3
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.4
Java&Spring記事人気No4
Kotlinのデータクラス(data class)とは?便利な特徴と使い方を初心者向けにやさしく解説!