当前位置: 首页 > article >正文

在 go 的项目中使用验证器

1:使用validate 包验证:

        安装包: go get github.com/go-playground/validator/v10

package controller

import (
	"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 Order
	if 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 的值请参考: 参考的值


http://www.kler.cn/a/149466.html

相关文章:

  • uni-app中使用 unicloud 云开发平台③
  • 区块链技术在电子政务中的应用
  • 【Linux】进程池实现指南:掌控并发编程的核心
  • Debezium日常分享系列之:异步 Debezium 嵌入式引擎
  • C语言第九周课——经典算法
  • 扫雷游戏代码分享(c基础)
  • 使用 DMA 在 FPGA 中的 HDL 和嵌入式 C 之间传输数据
  • 【算法刷题】Day8
  • 华为认证大数据工程师(HCIA-Big Data)--练习题
  • 在微服务架构中的数据一致性
  • 第二十章——多线程
  • 比尔盖茨:GPT-5不会比GPT-4好多少,生成式AI已达到极限
  • Jtti:linux中udp怎么判断是否接收到数据?
  • Linux 启动过程
  • hive- 18~18区间找最晚批次
  • 吃火锅(Python)
  • [个人笔记] Git的CLI笔录
  • cddd 安装指南(pip install cddd)
  • 延时任务定时发布,基于 Redis 与 DB 实现
  • 【蓝桥杯选拔赛真题26】C++字符串逆序 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析
  • Python之内置函数和模块
  • 小而美:持续盈利的经营法则
  • 医疗影像数据集—CT、X光、骨折、阿尔茨海默病MRI、肺部、肿瘤疾病等图像数据集
  • 汽车悬架底盘部件自动化生产线3d检测蓝光三维测量自动化设备-CASAIM-IS(2ND)
  • PC端ssh连接到Android手机的Termux部署http服务器
  • NX二次开发UF_MTX3_vec_multiply_t 函数介绍