1:使用validate 包验证:
安装包: go get github.com/go-playground/validator/v10
package controllerimport ("fmt""github.com/gin-gonic/gin""github.com/go-playground/validator/v10""net/http"
)// 使用 type OrderController struct 来区别同一个包下面出现相同的func 函数
type OrderController struct {
}//获取搜索的参数type Order struct {Id int `json:"id" validate:"required"` // 使用validate 的包进行验证Name string `json:"name" validate:"required"`OrderId int `json:"orderId" validate:"required"`Email string `json:"email" validate:"email"`
}type Search struct {Cid int `json:"cid"`Name string `json:"name"`
}func (o OrderController) GetList(c *gin.Context) {v := validator.New()// 从请求中获取JSON数据并绑定到Order结构体var order Orderif err := c.ShouldBindJSON(&order); err != nil { //将参数进行验证 并给order 结构体c.JSON(http.StatusBadRequest, gin.H{"jsonerr": err.Error()})return}// 使用validator验证Order结构体数据err := v.Struct(order)if err != nil {c.JSON(http.StatusBadRequest, gin.H{"vlidateerror": err.Error()})return}// 打印接收到的参数,这里可以根据实际需求进行后续处理,如查询数据库等。fmt.Printf("Received order: %+v", order)c.JSON(http.StatusOK, gin.H{"message": "Successfully received order"})}
validate 的值请参考: 参考的值