首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Nest.js 实战系列四:使用管道、DTO 验证入参,摆脱 if-else 的恐惧

你是否曾经为了验证参数,写了一大堆 if - else ?然后还要判断各种参数类型?相似的结构不同的方法里判断,却又要复制一遍代码?...使用 DTO 可以清晰的了解对象的结构,使用 Pipes(管道)配合 class-validator 还可以对参数类型进行判断,还可以验证失败的时候抛出错误信息。...数据传输对象(DTO)(Data Transfer Object),是一种设计模式之间传输数据的软件应用系统。数据传输目标往往是数据访问对象从数据库检索数据。...class-transformer -S 然后 validation.pipe.ts 编写验证逻辑: // src/pipe/validation.pipe.ts import { ArgumentMetadata...总结 本篇介绍了如何定义 DTO,如何使用 Pipes 管道,以及如何配合 class-validator 进行入参验证

3.7K20

Nest.js 从零到壹系列(五):使用管道、DTO 验证入参,摆脱 if-else 的恐惧

你是否曾经为了验证参数,写了一大堆 if - else ?然后还要判断各种参数类型?相似的结构不同的方法里判断,却又要复制一遍代码?...使用 DTO 可以清晰的了解对象的结构,使用 Pipes(管道)配合 class-validator 还可以对参数类型进行判断,还可以验证失败的时候抛出错误信息。...数据传输对象(DTO)(Data Transfer Object),是一种设计模式之间传输数据的软件应用系统。数据传输目标往往是数据访问对象从数据库检索数据。...class-transformer -S 然后 validation.pipe.ts 编写验证逻辑: // src/pipe/validation.pipe.ts import { ArgumentMetadata...总结 本篇介绍了如何定义 DTO,如何使用 Pipes 管道,以及如何配合 class-validator 进行入参验证

4K41

class-validator使用

使用nestjs开发应用时,我们一般需要对前端提交的数据进行验证,此时就需要用到class-validator这个库了。...console.log('验证失败:', errors); } else { console.log('验证通过'); }});1、首先导入了class-validator的一些常用装饰器...前端提交的数据,经过程序解析,一般都是一个字面量对象,如果直接使用validate进行验证,validate是找不到字面量对象的生成类的,所以就谈不上验证。那怎么办呢?...此时我们需要将字面量对象转化为类对象,并且是class-validator的修饰符修饰过的类的对象,怎么办呢?此时我们需要另外一个库class-transformer。...class-transformer这个库的作用就是将对象转化为类对象转化过程可以做一些过滤约束等等操作。我们下片文章来讲解class-transformer的使用

20610

从零开始的 Nest.js

路由 nest 的路由是位于一个被Controller装饰的类,每个路由是该类的一个方法,该方法被Get``Post等装饰器装饰,而返回的值则是响应对象。...1yarn add @nestjs/swagger swagger-ui-express COPY app.module中加入 js 1const options = new DocumentBuilder...随后每个路由上,你也可以添加一些装饰器路由上,swagger 会生成描述等。 控制器对象上加上 ApiTags装饰器,即可对不同控制器加以分组。...请求过滤 nest 同样提供了强大了请求过滤,你可以使用之前为 swagger 准备的 Dto 模型,在此基础上加以扩展,即可对请求体的模型进行验证验证通过 nest 的管道(Pipe)。...首先安装 class-validator,之后 main.ts 引入全局管道 ValidationPipe,ValidationPipe是 nest 提供的一个类似于Joi之类的 Schema 验证

1.6K20

NestJS 7.x 折腾记: (5) 管道,一个好玩的东西!比如入参校验!

前言 管道这个词,若是有玩过Linux的小伙伴肯定知晓,比如(看图): 意思就git的提交记录以单行显示的前三条,而且提交概要中有build这个词的 nest里面的管道,主要是用来做入参数据类型的拦截转换...│ res │ Generate a new CRUD resource # 会在src/common/pipes/生成 validation.pipe.ts # 根路径nest-cli.json.../common'; // plainToClass 会把一个普通的js对象转换成指定类的实例 import { plainToClass } from 'class-transformer'; // 可以识别校验装饰器数据...this.toValidate(metatype)) { // 如果没有传入验证规则,则不验证,直接返回数据 return value; } // 将对象转换为...Class 来验证 const object = plainToClass(metatype, value); // 同步阻塞,返回校验结果 const errors = await

1.1K30

【Nest教程】数据验证class-validator

通过前面几章节,我们项目的基础已经出来了,增加自定义过滤器和拦截器,连接MySQL,但是只能说是基础,因为很多功能我们都没有实现,今天实现的功能是对前台传入的字段进行验证。...说白一点,就是一个接口,必定有必填字段和字段的要求,如果前台调用这个接口,字段不符合,应正确提示不符合的字段,class-validator 用于入的数据验证。...1 项目安装 yarn add class-validator 2 全局验证通道 对比前面的教程,可以看出这个问文件,只添加两行代码,一行是导入ValidationPipe ,另一行是开启一个全局验证通道...import { NestFactory } from '@nestjs/core'; import { ValidationPipe } from '@nestjs/common'; import...await app.listen(3000); } bootstrap(); 3 使用class-validator 为了项目统一管理,我们之前的User模块下,新建Dto文件夹,这里面放置我们的文件

2K1311

NestJs 管道(Pipe)

Hi~ 大家好,我是小鑫同学,资深 IT 从业者,InfoQ 的签约作者,擅长前端开发并在这一领域有多年的经验,致力于分享我技术方面的见解和心得 Nestjs 管道是具有 @Injectable...管道(Pipe)的使用 Nestjs 内置了下列的9个管道,利用这些管道可以轻松的验证路由参数、查询参数和请求正文是否合法,下面通过两个例子一起看一下管道的使用。...上面的例子中使用了管道类而非管道的实例是因为 Nestjs 基于 IoC 的设计框架内部可以自动对类进行实例化操作,管道同时也支持通过构造函数传递选项的方式自定义内置管道的行为。...nest g pi joi-validation 创建一个公共的管道, transform 函数中使用已经注入的ObjectSchema 对象提供的 validate 函数对请求参数 value 做验证...使用 plainToInstance 将元类型和请求体参数转为可验证的类型对象。 通过 validate 函数执行校验,校验未通过则抛出合理的异常信息。

28920

Nest.js 从零到壹系列(七):讨厌写文档,Swagger UI 了解一下?

上家公司恒大的时候,项目的后端文档使用 Swagger UI 来展示,这是一个遵循 RESTful API 的、 可以互动的文档,所见即所得。...main.ts 引入,并设置一些基本信息即可: // src/main.ts import { NestFactory } from '@nestjs/core'; import { AppModule...user.dto.ts 引入 ApiProperty,然后添加到之前的 class-validator 上: // src/logical/user/user.dto.ts import { IsNotEmpty..., IsNumber, IsString } from 'class-validator'; import { ApiProperty } from '@nestjs/swagger'; export...可以看到,我们只需写代码的时候,加一些装饰器,并配置一些属性,就可以 Swagger UI 中生成文档,并且这个文档是根据代码,实时更新的。

4.4K10

实现nest的自定义注解

前言 Nest 与 class-validator[1] 配合得很好,它允许我们使用基于装饰器的验证dto层我们可以通过它的一些内置注解完成对参数的一些常用校验。...":"21","title":"标题测试"}' 处理的时候,需要把var config =截取掉,只保留json字符串,然后转成json对象,要求属性总数必须大于2,我们很容易就能写出代码来,如下所示...NestJS搭建服务端应用[2]”所创建的项目,以此为基础进行扩展。...我们阅读class-validator仓库文档的custom-validation-decorators[3]章节后,大概了解了它的流程,接下来我们来实践它。...参考资料 [1]class-validator: https://github.com/pleerock/class-validator [2]使用NestJS搭建服务端应用: https://juejin.cn

63420

快速打开 Nestjs 的世界

读取请求对象 请求对象表示一个 HTTP 请求所携带的数据信息,如请求数据的查询参数、路由参数、请求头、请求体等数据。...图片来自:docs.nestjs.com/middleware 中间件是路由处理程序前调用的函数,除了可以访问请求对象和响应对象以外还有中间件提供的 next() 函数。...catch()方法的参数,exception参数是当前正在处理的异常对象。...host参数是一个ArgumentsHost对象,从host参数获取对传递给原始请求处理程序(异常产生的控制器)的Request和Response对象的引用。...图片来自:docs.nestjs.com/pipes 管道 Nestjs 中提供转换(将输入数据转换为所需的形式)和验证(验证输入数据是否有效,有效则向下传递,反之抛出异常)两大类功能。

39410

BFF与Nestjs实战

bff和node没有强绑定关系,但让前端人员去熟悉node之外的后端语言学习成本太高,所以技术栈上我们使用node作为中间层,node的http框架我们使用的是nestjs。...Module,字面意思是模块,nestjs由@Module()修饰的class就是一个Module,具体项目中我们会将其作为当前子模块的入口,比如一个完整的项目可能会有用户模块,商品管理模块,人员管理模块等等...Middleware 中间件 Nestjs是对Express的二次封装,Nestjs的中间件等价于Express的中间件,最常用的场景就是全局的日志、跨域、错误处理、cookie格式化等较为常见的...通常管道有两种应用场景: 请求数据转换 请求数据验证:对输入数据进行验证,如果验证成功继续传递; 验证失败则抛出异常 数据转换应用场景不多,这里只讲一下数据验证的例子,数据验证后台管理项目最常见的场景...通常我们的Nest的应用会配合class-validator来进行数据验证,我们pipes目录下新建validation.pipe.ts validation.pipe.ts import {PipeTransform

2.6K10

学完这篇 Nest.js 实战,还没入门的来锤我!(长文预警)

数据传输目标往往是数据访问对象从数据库检索数据。数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具有任何行为除了存储和检索的数据(访问和存取器)。...这一段是官方解释, 看不懂没关系,可以理解成,DTO 本身更像是一个指南, 使用API时,方便我们了解请求期望的数据类型以及返回的数据对象。先使用一下,可能更方便理解。...管道验证操作通常用在dto这种传输层的文件,用作验证操作。...create-post.dto.ts文件添加验证, 完善错误信息提示: import { IsNotEmpty, IsNumber, IsString } from 'class-validator'...,上面只编写了一些常用的验证class-validator还提供了很多的验证方法, 大家感兴趣可以自己看官方文档.

12.2K54

学完这篇 Nest.js 实战,还没入门的来锤我!(长文预警)

数据传输目标往往是数据访问对象从数据库检索数据。数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具有任何行为除了存储和检索的数据(访问和存取器)。...这一段是官方解释, 看不懂没关系,可以理解成,DTO 本身更像是一个指南, 使用API时,方便我们了解请求期望的数据类型以及返回的数据对象。先使用一下,可能更方便理解。...管道验证操作通常用在dto这种传输层的文件,用作验证操作。...然后create-post.dto.ts文件添加验证, 完善错误信息提示: import { IsNotEmpty, IsNumber, IsString } from 'class-validator...,上面只编写了一些常用的验证class-validator还提供了很多的验证方法, 大家感兴趣可以自己看官方文档.

9.4K11
领券