路由

[[toc]]

介绍

Goravel 路由模块可以使用 facades.Route 进行操作,facades.Route 是知名 HTTP 框架 gin-gonic/gin 的一个实例,使用方法与 gin-gonic/gin 完全一致。

默认路由文件

所有路由文件都在 /routes 目录中进行定义。框架默认有一个示例路由 /routes/web.go,其中 func Web 方法被注册到 app/providers/route_service_provider.go 文件中,以实现路由的绑定。

你也可以根据这种方法进行更细颗粒的管理,可以在 routes 目录下新增路由文件,然后在 app/providers/route_service_provider.go 文件中进行注册。

启动 HTTP 服务器

在根目录下 main.go 中启动 HTTP 服务器

  1. package main
  2. import (
  3. "github.com/goravel/framework/support/facades"
  4. "goravel/bootstrap"
  5. )
  6. func main() {
  7. //This bootstraps the framework and gets it ready for use.
  8. bootstrap.Boot()
  9. //Start http server by facades.Route.
  10. go func() {
  11. if err := facades.Route.Run(facades.Config.GetString("app.host")); err != nil {
  12. facades.Log.Errorf("Route run error: %v", err)
  13. }
  14. }()
  15. select {}
  16. }

基本路由

可以使用闭包的形式,定义一个很简单的路由:

  1. facades.Route.GET("/", func(c *gin.Context) {
  2. c.JSON(200, gin.H{
  3. "message": "pong",
  4. })
  5. })

可用的路由方法

  1. facades.Route.GET("/someGet", getting)
  2. facades.Route.POST("/somePost", posting)
  3. facades.Route.PUT("/somePut", putting)
  4. facades.Route.DELETE("/someDelete", deleting)
  5. facades.Route.PATCH("/somePatch", patching)
  6. facades.Route.HEAD("/someHead", head)
  7. facades.Route.OPTIONS("/someOptions", options)

路由参数

  1. facades.Route.GET("/user/:name", func(c *gin.Context) {
  2. name := c.Param("name")
  3. c.String(http.StatusOK, "Hello %s", name)
  4. })

路由传参

  1. router.GET("/welcome", func(c *gin.Context) {
  2. firstname := c.DefaultQuery("firstname", "Guest")
  3. lastname := c.Query("lastname") // shortcut for c.Request.URL.Query().Get("lastname")
  4. c.String(http.StatusOK, "Hello %s %s", firstname, lastname)
  5. })

更多使用方法

详见 gin-gonic/gin