路由

  • 基本路由
    gin 框架中采用的路由库是 httprouter。
  1. // 创建带有默认中间件的路由:
  2. // 日志与恢复中间件
  3. router := gin.Default()
  4. //创建不带中间件的路由:
  5. //r := gin.New()
  6. router.GET("/someGet", getting)
  7. router.POST("/somePost", posting)
  8. router.PUT("/somePut", putting)
  9. router.DELETE("/someDelete", deleting)
  10. router.PATCH("/somePatch", patching)
  11. router.HEAD("/someHead", head)
  12. router.OPTIONS("/someOptions", options)

  • 路由参数

api 参数通过Context的Param方法来获取

  1. router.GET("/string/:name", func(c *gin.Context) {
  2. name := c.Param("name")
  3. fmt.Println("Hello %s", name)
  4. })

URL 参数通过 DefaultQuery 或 Query 方法获取

  1. // url 为 http://localhost:8080/welcome?name=ningskyer时
  2. // 输出 Hello ningskyer
  3. // url 为 http://localhost:8080/welcome时
  4. // 输出 Hello Guest
  5. router.GET("/welcome", func(c *gin.Context) {
  6. name := c.DefaultQuery("name", "Guest") //可设置默认值
  7. // 是 c.Request.URL.Query().Get("lastname") 的简写
  8. lastname := c.Query("lastname")
  9. fmt.Println("Hello %s", name)
  10. })

表单参数通过 PostForm 方法获取

  1. //form
  2. router.POST("/form", func(c *gin.Context) {
  3. type := c.DefaultPostForm("type", "alert")//可设置默认值
  4. msg := c.PostForm("msg")
  5. title := c.PostForm("title")
  6. fmt.Println("type is %s, msg is %s, title is %s", type, msg, title)
  7. })

  • 路由群组
  1. someGroup := router.Group("/someGroup")
  2. {
  3. someGroup.GET("/someGet", getting)
  4. someGroup.POST("/somePost", posting)
  5. }