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

第四步:加入请求参数校验

文章目录

  • 1 引入管道,并全局启用
  • 2 针对请求参数文档`user_copy.swagger.validator.ts`文件内的代码修改
  • 3 引入并使用
  • 4 测试拦截效果

  • 注:不要关心注释代码,那是属于后面功能的区域。因为随着代码体量加大,功能不再明确,只需按照步骤并参考效果图,把关键代码写入即可,所以下只写关键代码,具体请看效果图。
    项目地址

1 引入管道,并全局启用

npm i --save class-validator class-transformer
/src/main.tsimport { ValidationPipe } from '@nestjs/common';// 全局挂载管道
app.useGlobalPipes(new ValidationPipe());

效果图

2 针对请求参数文档user_copy.swagger.validator.ts文件内的代码修改

  • 加入@IsNotEmpty() 即可开启请求参数校验
/src/user_copy/user_copy.swagger.validator.ts// Swagger 文档配置 https://docs.nestjs.cn/8/recipes?id=swagger
import { ApiProperty } from '@nestjs/swagger';
// 请求参数验证(自动验证) https://docs.nestjs.cn/8/techniques?id=%e8%87%aa%e5%8a%a8%e9%aa%8c%e8%af%81
import { IsNotEmpty } from 'class-validator'export class userResponsesValidator {// 接口文档展示信息 description 示例值  example 字段描述  required:true 则展示为必填@ApiProperty({ description: '', example: '账号', required: true })@IsNotEmpty({message:'账号必填'})user_name: string;@ApiProperty({ description: '', example: '密码', required: true })@IsNotEmpty({message:'密码必填'})password: string;@ApiProperty({ description: '', example: '年龄', required: false })age: string;@ApiProperty({ description: '', example: '性别', required: false })sex: string;@ApiProperty({ description: '', example: '时间', required: false })date: string;
}export class GetRequestDto {@ApiProperty({ description: '', example: '账号', required: true })@IsNotEmpty({message:'账号必填'})user_name: string;
}

3 引入并使用

/src/user_copy/user_copy.controller.tsimport { userResponses, userResponsesValidator, GetRequestDto } from './user_copy.swagger.validator'// ----------------------- 以下示例接口将加入Swagger文档,开启请求参数必填校验-----------------------// Swagger标签@ApiTags('有Swagger文档/开启请求参数校验')// 请求方式:Post, 请求路径:/user-copy/addValidator@Post('addValidator')// @Body() 装饰器async addDataValidator(@Body() body: userResponsesValidator) {// create 插入一条数据,直接将接收到的body参数插入const data = await this.userModel.create(body)if (data) {return { code: 200, data: null, message: "操作成功" }}}// Swagger标签@ApiTags('有Swagger文档/开启请求参数校验')// 针对Get请求 使其可以在接口文档模拟传参@ApiQuery({ name: 'user_name' })// 请求方式:Get, 请求路径:/user-copy/findValidator@Get('findValidator')// 响应参数文档@ApiCreatedResponse({ description: '', type: userResponses })// @Query() 装饰器async findDataValidator(@Query() query: GetRequestDto) {// find  查询指定数据const data = await this.userModel.find({ user_name: query.user_name })// 模糊查询// $regex 是 MongoDB 查询操作符,用于指定正则表达式进行匹配。$options: 'i' 表示不区分大小写,即忽略关键字的大小写。// const data = await this.userModel.find({ user_name: { $regex: query.user_name, $options: 'i' } })return { code: 200, data: data, message: "操作成功" }}

效果图

4 测试拦截效果

  • 现在账号/密码字段已加入必填校验,那么试试不传会发生什么
    效果图
    效果图
http://www.dtcms.com/a/457676.html

相关文章:

  • 地质时代简表
  • 网站开发使用什么工具百度查重免费
  • 【Proteus仿真】单片机(AT89C51)向主机发送字符串
  • 做的网站没法本地上传图片室内装修设计软件3d
  • BIO、NIO、AIO详解
  • 从人类多能干细胞生成心脏形成类器官Protocol
  • 做网站的公司怎样收费石家庄网络关键词推广
  • 网站手机版后台生意宝做网站行吗
  • Energy-Efficient Satellite joint Computation and Communication
  • Iphone手机备份从专家到小白
  • 基于stc12单片机的PID恒温烙铁设计
  • 南阳专业网站设计公司浙江最近爆发的传染病
  • 2025年--Lc176--H509.斐波那契数(动态规划)--Java版
  • 【线程邮箱】
  • 网站优秀作品做网站经验
  • AI+洞察:大模型技术重塑医疗健康产业发展格局
  • 网站开发中的前端与后端技术解析
  • 定远县可以做网站的地方厦门城乡住房建设厅网站首页
  • JavaScript中的DOM操作
  • OpenAI DevDay 2025:ChatGPT 进化为平台,开启 AI 应用新纪元
  • 什么是模型微调
  • 郑州网站高端设计游戏官方网站开发设计报告
  • 如何用网站模板建设网站杭州网站建设哪家最好
  • 美团网站除佣金表格怎么做上海大型网站建设公司排名
  • 【C++】异常--学习笔记
  • 【linux内核驱动day05】
  • 富煌钢构:“T+EPC”模式引领钢结构行业变革
  • 前端学习 JavaScript
  • 深圳约的网站设计企业申报系统
  • 吴江盛泽建设局网站一个专门做标题的网站