ルーティング
Echo の最適化されたルーターは、radix tree を使ってリクエスト URL をハンドラへマッチさせ、 動的メモリ割り当てゼロとスマートなルート優先順位を実現します。
ルートを登録する
Section titled “ルートを登録する”Echo インスタンス上の HTTP メソッドヘルパーを使います。各ヘルパーはパスパターンと
HandlerFunc(func(c *echo.Context) error)を受け取り、任意でルートレベルの
ミドルウェアも受け取れます。
e := echo.New()
e.GET("/users/:id", getUser) // named parametere.POST("/users", createUser)e.PUT("/users/:id", updateUser)e.DELETE("/users/:id", deleteUser)e.GET("/static/*", serveFiles) // wildcardAny はサポートされているすべてのメソッドにハンドラを登録し、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 |
パスパラメーター
Section titled “パスパラメーター”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/metricsadmin.GET("/users", listUsers) // -> /admin/usersグループはネストでき、より大きなルートツリーを構成できます。