顶级目录 gin
routes/route.go
package routes
import (
"fmt"
"gin/app/requests"
"net/http"
"github.com/gin-gonic/gin"
)
func RegisterAPIRoutes(r *gin.Engine) {
v1 := r.Group("/v1")
v1.GET("hello", func(c *gin.Context) {
fmt.Println("helloword")
})
v1.POST("post", func(c *gin.Context) {
request := requests.Params{}//获取结构体里的参数实例
requestResult := requests.Validator(&request, c)//验证
if requestResult != nil {
c.JSON(http.StatusOK, gin.H{
"msg": requestResult.Error(),
})
return
}
c.JSON(http.StatusOK, "succes")
})
}
requests/test_request.go
package requests
import (
"github.com/gin-gonic/gin"
)
type Params struct {
Age uint8 `json:"age" binding:"gte=1,lte=130"`
Name string `json:"name" binding:"required"`
Email string `json:"email" binding:"required,email"`
Password string `json:"password" binding:"required"`
RePassword string `json:"re_password" binding:"required,eqfield=Password"`
}
func Validator(params interface{}, c *gin.Context) (err error) {
return c.ShouldBind(¶ms)
}
常用
英文 | 中文 |
---|---|
eq | 等于 |
gt | 大于 |
gte | 大于等于 |
lt | 小于等于 |
ne | 不等于 |
max | 最大值 |
min | 最小值 |
oneof | 其中一个 |
required | 等于 |
unique | 唯一的 |
isDefault | 默认值 |
len | 长度 |
邮箱格式 |