跳转到内容

路由

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

路由组可以嵌套,以组合更大的路由树。