ルーティングとパスパラメーター
ハンドラーの登録とURLパラメーターの解析
「ルーティングとパスパラメーター」は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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- HTTPサーバーの作成
- ルーティングとパスパラメーター
- ミドルウェアパターン
- グレースフルシャットダウン