顶级目录 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 | 长度 |
| 邮箱格式 |

这篇博客展示了如何利用Gin框架为API定义路由,包括GET和POST请求的处理。在`route.go`文件中,创建了/v1的组路由,并定义了hello和post两个接口。`test_request.go`文件中,定义了请求参数结构并实现了参数验证功能,确保了如年龄、姓名、邮箱等字段的有效性。
2195





