Ir al contenido

Routing

El router optimizado de Echo hace coincidir URLs de request con handlers usando un árbol radix con cero asignaciones dinámicas de memoria y priorización inteligente de rutas.

Usa los helpers de métodos HTTP en la instancia Echo. Cada uno recibe un patrón de path y una HandlerFunc (func(c *echo.Context) error), con middleware opcional a nivel de ruta.

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 registra un handler para todos los métodos soportados, y Match para un conjunto específico:

e.Any("/ping", pong)
e.Match([]string{http.MethodGet, http.MethodPost}, "/form", handleForm)
PatrónTipoEjemplo de coincidencia
/users/profileStatic/users/profile
/users/:idParam/users/42
/static/*Wildcard/static/css/app.css

Lee parámetros nombrados desde el contexto con c.Param() (o c.ParamOr() para un valor por defecto):

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

El segmento wildcard está disponible como el parámetro *:

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

Agrupa rutas que comparten un prefijo y middleware con e.Group():

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

Los grupos pueden anidarse para componer árboles de rutas más grandes.