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

Go言語のハンドラ関数の作り方とリクエスト処理の流れ

Go言語のハンドラ関数の作り方とリクエスト処理の流れ
Go言語のハンドラ関数の作り方とリクエスト処理の流れ

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

生徒

「Go言語でWebアプリを作るときにハンドラ関数って何ですか?」

先生

「ハンドラ関数とは、ブラウザからのリクエストを受け取って処理する関数のことです。」

生徒

「どうやってリクエストを受け取って処理するんですか?」

先生

「Goではnet/httpパッケージを使って、URLごとにハンドラ関数を登録することで処理できます。」

生徒

「具体的な作り方を教えてください!」

先生

「それでは、順を追って説明しますね。」

1. ハンドラ関数の基本

1. ハンドラ関数の基本
1. ハンドラ関数の基本

ハンドラ関数は、http.ResponseWriter*http.Requestの二つの引数を受け取ります。ResponseWriterはブラウザに返すデータを作るためのもので、Requestはリクエストの内容を取得するための構造体です。


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. リクエスト処理の流れ

2. リクエスト処理の流れ
2. リクエスト処理の流れ

ブラウザからURLにアクセスすると、GoのWebサーバーがそのリクエストを受け取ります。そして、http.HandleFuncで登録したURLパスに対応するハンドラ関数が呼び出されます。

ハンドラ関数内で、リクエストの内容に応じて表示内容を変えたり、データベースと連携した処理を行ったりすることができます。

3. URLごとに異なる処理を設定する

3. URLごとに異なる処理を設定する
3. URLごとに異なる処理を設定する

複数のURLに対して異なるハンドラ関数を設定することで、Webアプリに複数のページを持たせることができます。


package main

import (
    "fmt"
    "net/http"
)

func homeHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "ホームページです")
}

func aboutHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "このサイトについて")
}

func main() {
    http.HandleFunc("/", homeHandler)
    http.HandleFunc("/about", aboutHandler)
    http.ListenAndServe(":8080", nil)
}
(http://localhost:8080/はホームページ、http://localhost:8080/aboutは「このサイトについて」と表示されます)

4. リクエストの種類を判別する

4. リクエストの種類を判別する
4. リクエストの種類を判別する

HTTPリクエストにはGETやPOSTなどの種類があります。ハンドラ関数内でr.Methodを確認することで、リクエストの種類ごとに処理を分けることができます。


func handler(w http.ResponseWriter, r *http.Request) {
    if r.Method == "GET" {
        fmt.Fprintln(w, "GETリクエストを受け取りました")
    } else if r.Method == "POST" {
        fmt.Fprintln(w, "POSTリクエストを受け取りました")
    }
}

5. ハンドラ関数作成のポイント

5. ハンドラ関数作成のポイント
5. ハンドラ関数作成のポイント
  • ハンドラ関数はResponseWriter*Requestを引数に持つ
  • URLごとにhttp.HandleFuncで登録する
  • リクエストの種類(GETやPOST)をr.Methodで判別できる
  • 処理は必要に応じて分岐させて柔軟に対応する

これらの基本を理解すれば、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)とは?便利な特徴と使い方を初心者向けにやさしく解説!