首页 > 其他分享 >5_nest管道和数据校验

5_nest管道和数据校验

时间:2023-10-25 16:36:00浏览次数:31  
标签:IsString ApiProperty nest 校验 管道 ValidationPipe IsNotEmpty class

管道

Nest 在路由处理器之前调用管道,然后管道接收发往路由处理器的参数

验证输入数据,给输入数据添加字段

管道有两个典型的用例:
验证:评估输入数据,如果有效,则将其原样传递;否则,当数据不正确时抛出一个异常。
转型:把输入数据转换为所需的格式(例如,从字符串到整型)。

设置全局 ValidationPipe
要执行输入验证,用 NestJS 内置的 ValidationPipe。ValidationPipe 提供了一个方便的方法来为所有传入客户端的有效负载强制验证规则,这些验证规则是用来自 class-calidator 的装饰器定义的。
安装对应包

npm install class-validator class-transformer

在main.ts中使用

import { ValidationPipe } from '@nestjs/common';

app.useGlobalPipes(new ValidationPipe({whitelist: true}));

whitelist: 去掉多余的值

在dto中增加规则

// src/articles/dto/create-article.dto.ts


import { ApiProperty } from '@nestjs/swagger';
import {
  IsBoolean,
  IsNotEmpty,
  IsOptional,
  IsString,
  MaxLength,
  MinLength,
} from 'class-validator';


export class CreateArticleDto {
  @IsString()
  @IsNotEmpty()
  @MinLength(5)
  @ApiProperty()
  title: string;


  @IsString()
  @IsOptional()
  @IsNotEmpty()
  @MaxLength(300)
  @ApiProperty({ required: false })
  description?: string;


  @IsString()
  @IsNotEmpty()
  @ApiProperty()
  body: string;


  @IsBoolean()
  @IsOptional()
  @ApiProperty({ required: false, default: false })
  published?: boolean = false;
}

为了替代在路由处理器中手动转型,你可以使用 NestJS 管道自动把 id 转换为数字。将内置的 ParseIntPipe 添加到这三个端点的控制器路由处理器中:

标签:IsString,ApiProperty,nest,校验,管道,ValidationPipe,IsNotEmpty,class
From: https://www.cnblogs.com/mykai/p/17787510.html

相关文章

  • 使用aop去实现token校验
    1.前言昨天去面试,被问懵的一个面试题,面试官看了一下简历,轻笑了一声原来你是用拦截器做的token校验啊,那么改用aop你怎么去做校验。我当时脑袋一篇空白。下面就写个小demo2.aop通知先回顾一下aop的通知,aop通知有五种分别如下前置通知:方法执行前通知后置通知:方法执行后通知......
  • Modbus协议详解4:RTU帧 & ASCII帧的差错校验
    前面已经分析过RTU帧和ASCII帧的报文区别,细心的朋友应该会发现在两种不同的报文传输模式下都有一个共同的组成部分——差错校验。这个差错校验在RTU模式和ASCII模式下也不是不相同的。看下面的对比:RTU模式的差错校验:ASCII模式的差错校验:总而言之,RTU模式下用的是CRC校验,ASCII模式下......
  • 校验 ChatGPT4 真实性的三个经典问题:快速区分 GPT3.5 与 GPT4,并提供免费测试网站
    现在已经有很多ChatGPT的套壳网站,以下分享验明GPT-4真身的三个经典问题,帮助你快速区分套壳网站背后到底用的是GPT-3.5还是GPT-4。大家可以在这个网站测试:https://ai.hxkj.vip,免登录可以问三条,登录之后无限制。咱们使用免登录的额度测试就已经够用了测试问题1:Whatist......
  • URPF---源地址校验
    uRPF技术:单播逆向路径转发(UnicastReversePathForwarding),其主要功能是防止基于源地址欺骗的网络攻击行为。在没有配置uRPF技术时,网络设备不检查数据包的源地址,只关心能不能到达目的地址。由此,产生了虚假源地址欺骗网络攻击行为,例如基于源地址欺骗的DOS攻击和DDOS攻击......
  • 在Delphi中使用正则表达式校验中文姓名
    usessystem.RegularExpressions;functionIsChineseName(constaName:string;constaMaxLength:Integer=10):Boolean;beginvarPattern:='^[\x{4E00}-\x{9FA5}]{2,'+aMaxLength.ToString+'}(·[\x{4E00}-\x{9FA5}]{2,'+aMaxLength.ToString......
  • 表单校验,常见的
    <el-formref="form":model="form":rules="rules"label-width="90px"class="readonly-field"></el-form>校验//密码校验constcheckoutPassword=(rule,value,callback)=>{constipRules=/^(?=......
  • 17.2 实现无管道正向CMD
    WSASocket无管道正向CMD,使用WSASocket函数创建一个TCP套接字,并绑定到一个本地地址和端口上。然后使用CreateProcess函数创建一个新的CMD进程,并将标准输入、输出和错误输出重定向到套接字的句柄上。这样,客户端可以通过网络连接到这个套接字,发送CMD命令并获取命令输出结果。这种方......
  • 17.3 实现无管道反向CMD
    WSASocket无管道反向CMD,与无管道正向CMD相反,这种方式是在远程主机上创建一个TCP套接字,并绑定到一个本地地址和端口上。然后在本地主机上,使用WSASocket函数连接到远程主机的套接字,并将标准输入、输出和错误输出重定向到套接字的句柄上。这样,本地主机就可以通过网络连接到远程主机的......
  • koa使用koa-parameter校验参数
    koa使用koa-parameter校验参数Poppy11关注IP属地:陕西2020.09.0109:57:06字数99阅读4,130koa-parameter一般是用来校验请求传过来的参数是否是自己所需要的的一、首先下载依赖npmikoa-parameter--save二、在index.js中引入koa-parameter,一般挂载这个中间......
  • INFINI Labs 产品更新 | Easysearch 优化字段压缩提升写入速度,Console 优化数据迁移和
    INFINILabs产品又更新啦~。本次更新概要如下:Easysearch增强source_reuse压缩功能,并大幅提升写入速度;Console优化了数据迁移和校验功能,新增了通用的数据列表和下拉等标准组件,化繁为简,实现可复用。以下是本次更新的详细说明。INFINIEasysearchv1.6.1INFINIEasysearch是......