ルーティング
Ginは高性能なURLマッチングのためにhttprouter上に構築された強力なルーティングシステムを提供します。内部的にhttprouterは基数木(圧縮トライとも呼ばれる)を使用してルートの格納と検索を行うため、ルートマッチングは非常に高速で、検索ごとのメモリアロケーションはゼロです。これによりGinは利用可能な最速のGoウェブフレームワークの一つとなっています。
ルートはエンジン(またはルートグループ)上でHTTPメソッドを呼び出し、URLパターンと1つ以上のハンドラ関数を指定することで登録します:
package main
import ( "net/http"
"github.com/gin-gonic/gin")
func main() { router := gin.Default()
router.GET("/hello", func(c *gin.Context) { c.String(http.StatusOK, "Hello, World!") })
router.POST("/users", func(c *gin.Context) { name := c.PostForm("name") c.JSON(http.StatusCreated, gin.H{"user": name}) })
router.Run(":8080")}このセクションの内容
以下のページでは各ルーティングトピックを詳しく説明します:
- HTTPメソッドの使用 — GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONSのルートを登録します。
- パス内のパラメータ — URLパスから動的セグメントをキャプチャします(例:
/user/:name)。 - クエリ文字列パラメータ — リクエストURLからクエリ文字列の値を読み取ります。
- クエリとポストフォーム — 同じハンドラ内でクエリ文字列とPOSTフォームデータの両方にアクセスします。
- マップとしてのクエリ文字列またはポストフォーム — クエリ文字列またはPOSTフォームからマップパラメータをバインドします。
- Multipart/URLエンコードフォーム —
multipart/form-dataとapplication/x-www-form-urlencodedのボディをパースします。 - ファイルアップロード — 単一および複数のファイルアップロードを処理します。
- ルートのグルーピング — 共有ミドルウェアを持つ共通プレフィックスの下にルートを整理します。
- リダイレクト — HTTPおよびルーターレベルのリダイレクトを実行します。