路由
匹配所有
匹配零个或多个字符的路径。例如, /users/* 将会匹配;
/users//users/1/users/1/files/1/users/anything...
路径匹配顺序
- Static (固定路径)
- Param (参数路径)
- Match any (匹配所有)
示例
e.GET("/users/:id", func(c echo.Context) error {
return c.String(http.StatusOK, "/users/:id")
})
e.GET("/users/new", func(c echo.Context) error {
return c.String(http.StatusOK, "/users/new")
})
e.GET("/users/1/files/*", func(c echo.Context) error {
return c.String(http.StatusOK, "/users/1/files/*")
})
上面定义的路由将按下面的优先级顺序匹配:
/users/new/users/:id/users/1/files/*
路由命名
每个注册路由返回一个 Route 对象。它可以在注册了之后用来给路由命名。比如:
routeInfo := e.GET("/users", func(c echo.Context) error {
return c.String(http.StatusOK, "route test")
})
routeInfo.Name = "user"
// 或者这样写
e.GET("/users/new", func(c echo.Context) error {
return c.String(http.StatusOK, "route test")
}).Name = "newuser"
当需要在模版生成uri的时候使用命名路由就会比较方便。
构造URI
Echo.URI Echo.URL可以通过构造方法来生成url
func main() {
e := echo.New()
e.GET("/admin/:id", resp)
// 根据handlerFunc生成url
uri := e.URI(resp, 123456)
fmt.Println(uri)
e.Logger.Fatal(e.Start(":8000"))
}
func resp(c echo.Context) error {
return c.String(http.StatusOK, "OK")
}
Echo#Reverse(name string, params ...interface{}) 方法用来根据路由名生成 uri
func main() {
e := echo.New()
e.GET("/admin/:id", resp).Name = "admin"
// 根据路由名称生成uri
uri := e.Reverse("admin", 123456)
fmt.Println(uri)
e.Logger.Fatal(e.Start(":8000"))
}
func resp(c echo.Context) error {
return c.String(http.StatusOK, "OK")
}

浙公网安备 33010602011771号