Go Academy · レッスン

ルーティングとパスパラメーター

ハンドラーの登録とURLパラメーターの解析

レッスン 2/413 ステップ

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

標準 mux の制限

デフォルトの http.ServeMux は、パスパラメーター(例:/users/{id})やメソッドベースのルーティングをサポートしていません。Go 1.22 でパターンのサポートが強化されました。

Go 1.22 の拡張パターン

Go 1.22 以降、ServeMux はメソッドプレフィックスとパスパラメーターをサポートします。

mux.HandleFunc("GET /users/{id}", func(w http.ResponseWriter, r *http.Request) {
    id := r.PathValue("id")
    fmt.Fprintln(w, "user:", id)
})

r.PathValue

r.PathValue("name") は、URL パターンから名前付きセグメントを抽出します(Go 1.22 以降)。

// Pattern: "GET /products/{category}/{id}"
category := r.PathValue("category")
id := r.PathValue("id")

手動によるパス解析

Go < 1.22 または複雑なルールの場合は、strings.Split(r.URL.Path, "/") でパスセグメントを抽出します。

parts := strings.Split(strings.Trim(r.URL.Path, "/"), "/")
// /users/42 → ["users", "42"]

メソッドルーティング

単一のハンドラー内でメソッドごとの処理を行うには、r.Method に対する switch を使用します。

switch r.Method {
case http.MethodGet:
    getHandler(w, r)
case http.MethodPost:
    createHandler(w, r)
default:
    w.WriteHeader(http.StatusMethodNotAllowed)
}

よく使われるサードパーティールーター

gorilla/mux、chi、httprouter などのライブラリは、正規表現による制約、名前付きグループ、ミドルウェアチェーン、サブルーターといった、より豊富なルーティング機能を提供します。

chi ルーター

chi は、net/http ハンドラーと互換性のある軽量で慣用的なルーターです。

r := chi.NewRouter()
r.Get("/users/{id}", getUser)
http.ListenAndServe(":8080", r)

クエリパラメーター

r.URL.Query() からクエリパラメーターを読み取ります。この関数は url.Values マップを返します。

page := r.URL.Query().Get("page")
if page == "" { page = "1" }

ワイルドカードとキャッチオール

Go 1.22 のパターンでは、{name...} はパスの残りの部分に一致するワイルドカードです。

mux.HandleFunc("/static/{path...}", serveStatic)

ネストされたルート

サブルーターを使うか、共通のプレフィックスを持つハンドラーを登録して、関連するルートをグループ化します。chi の r.Route は、プレフィックス用のサブルーターを作成します。

末尾スラッシュのリダイレクト

http.ServeMux は、/path/ から /path へ、またはその逆へ自動的にリダイレクトします。無効にするには、mux がリクエストを受け取る前に、ミドルウェアで末尾のスラッシュを削除します。

確認問題

Go 1.22 以降で、一致した URL パターンから {id} セグメントを抽出するにはどうしますか。

まとめ:ルーティングとパスパラメーター

重要なポイント:

  • Go 1.22:ServeMux でメソッドプレフィックスと {name} パスパラメーターを使用できます
  • r.PathValue("name") で名前付きセグメントを抽出します
  • メソッドごとの処理には method switch を使用します
  • 複雑なルーティングにはサードパーティールーター(chi、gorilla/mux)を使用します
無料で開始

AI チューターと学ぶ Go — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
51
レッスン
203

よくある質問

「ルーティングとパスパラメーター」レッスンは無料ですか?

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

「ルーティングとパスパラメーター」で何を学びますか?

ハンドラーの登録とURLパラメーターの解析 ブラウザで直接実行するハンズオンコードでGo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「ルーティングとパスパラメーター」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. HTTPサーバーの作成
  2. ルーティングとパスパラメーター
  3. ミドルウェアパターン
  4. グレースフルシャットダウン
← Go Academyに戻る