コンテンツにスキップ

ルーティング

Echo の最適化されたルーターは、radix tree を使ってリクエスト URL をハンドラへマッチさせ、 動的メモリ割り当てゼロとスマートなルート優先順位を実現します。

Echo インスタンス上の HTTP メソッドヘルパーを使います。各ヘルパーはパスパターンと HandlerFuncfunc(c *echo.Context) error)を受け取り、任意でルートレベルの ミドルウェアも受け取れます。

e := echo.New()
e.GET("/users/:id", getUser) // named parameter
e.POST("/users", createUser)
e.PUT("/users/:id", updateUser)
e.DELETE("/users/:id", deleteUser)
e.GET("/static/*", serveFiles) // wildcard

Any はサポートされているすべてのメソッドにハンドラを登録し、Match は指定した集合に登録します。

e.Any("/ping", pong)
e.Match([]string{http.MethodGet, http.MethodPost}, "/form", handleForm)
パターン種別マッチ例
/users/profile静的/users/profile
/users/:idパラメーター/users/42
/static/*ワイルドカード/static/css/app.css

c.Param() でコンテキストから名前付きパラメーターを読み取ります (デフォルト値には c.ParamOr() を使います)。

func getUser(c *echo.Context) error {
id := c.Param("id")
return c.String(http.StatusOK, id)
}

ワイルドカードセグメントは * パラメーターとして取得できます。

e.GET("/files/*", func(c *echo.Context) error {
return c.String(http.StatusOK, c.Param("*"))
})

e.Group() を使い、プレフィックスとミドルウェアを共有するルートをグループ化します。

admin := e.Group("/admin", middleware.BasicAuth(authFn))
admin.GET("/metrics", metrics) // -> /admin/metrics
admin.GET("/users", listUsers) // -> /admin/users

グループはネストでき、より大きなルートツリーを構成できます。