gin RestFul api

GoLang gin gorm 学习笔记

GET请求

r.GET("/ping/:id", func(c *gin.Context) {
	id := c.Param("id")
	name := c.DefaultQuery("name", "default name")
	age := c.Query("age")

	c.JSON(200, gin.H{
		"message": "pong",
		"id": id,
		"name": name,
		"age": age,
	})
})

POST请求

type PostParams struct {
    Name string `form:"name" json:"name" binding:"required"`
    Age  int `form:"age" json:"age" binding:"required,mustBig"`
    Sex  string `form:"sex" json:"sex" binding:"required"`
}

r.POST("/bind", func(c *gin.Context) {
	var p PostParams
	err := c.ShouldBind(&p)
	if err != nil {
		c.JSON(http.StatusBadRequest, gin.H{
			"message": "报错了",
			"error":   err.Error(),
		})
		return
	}
	c.JSON(http.StatusOK, gin.H{
		"message": "ok",
		"data": p,
	})
})

Main

func main() {
	r := gin.Default()
	/// r.GET()...
	///r.POST()...
	r.Run(":8080")
}

参数校验

type PostParams struct {
	Name string `form:"name" json:"name" binding:"required"`
	Age  int `form:"age" json:"age" binding:"required,mustBig"`
	Sex  string `form:"sex" json:"sex" binding:"required"`
}

func mustBig(fl validator.FieldLevel) bool {
    if fl.Field().Interface().(int) <= 18 {
        return false
    }
    return true
}

func main() {
	r := gin.Default()

    if v,ok := binding.Validator.Engine().(*validator.Validate); ok {
        v.RegisterValidation("mustBig", mustBig)
    }
    /// r.GET()...
	///r.POST()...
	r.Run(":8080")
}