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

深圳网站建设 龙华信科网络服务器地址

深圳网站建设 龙华信科,网络服务器地址,适合seo优化的网站,做单本小说网站怎么样NestJS的Pipe是一个用于数据转换和验证的特殊装饰器。Pipe可以应用于控制器#xff08;Controller#xff09;的处理方法#xff08;Handler#xff09;和中间件#xff08;Middleware#xff09;#xff0c;用于处理传入的数据。它可以用来转换和验证数据#xff0c;确… NestJS的Pipe是一个用于数据转换和验证的特殊装饰器。Pipe可以应用于控制器Controller的处理方法Handler和中间件Middleware用于处理传入的数据。它可以用来转换和验证数据确保数据的有效性和一致性。 内置的 Pipe 是指在使用 NestJS 框架时已经预定义好的一些管道用于验证和转换传入的数据。 ValidationPipe验证管道用于验证传入的数据是否符合指定的规则可以使用 class-validator 和 class-transformer 库来实现验证和转换。ParseIntPipe整数转换管道用于将传入的字符串转换为整数。ParseBoolPipe布尔值转换管道用于将传入的字符串转换为布尔值。ParseArrayPipe数组转换管道用于将传入的字符串转换为数组。ParseUUIDPipeUUID 转换管道用于将传入的字符串转换为 UUID。DefaultValuePipe默认值管道用于在传入的参数不存在时给参数设置一个默认值。ParseEnumPipe枚举转换管道用于将传入的字符串转换为枚举类型。ParseFloatPipe浮点数转换管道用于将传入的字符串转换为浮点数。ParseFilePipe文件转换管道用于将传入的文件转换为上传的文件对象。 接下来我们测试一下内置 Pipe 的功能创建项目 nest new pipe -p npm修改 app.controller.ts 可以看到这个接口默认接收test的字符串参数 import { Controller, Get, Query } from nestjs/common; import { AppService } from ./app.service;Controller() export class AppController {constructor(private readonly appService: AppService) { }Get()getHello(Query(test) test: string): string {return test;} }1、ParseIntPipe 我们可以使用ParseIntPipe 将接收的字符串参数转为整数 import { Controller, Get, ParseIntPipe, Query } from nestjs/common; import { AppService } from ./app.service;Controller() export class AppController {constructor(private readonly appService: AppService) { }Get()getHello(Query(test, ParseIntPipe) test: string): string {return test10;} }访问接口 http://localhost:3000/?test100 可以看到参数test传入 100 变成了 110且当我们传入的参数不能转为init时 则会报错 例如下面 访问 http://localhost:3000/?testww这个返回的报错 我们也可以自定义 但是这种方式需要使用new XxxPipe 的方式 例如指定状态码为404 import { Controller, Get, HttpStatus, ParseIntPipe, Query } from nestjs/common; import { AppService } from ./app.service;Controller() export class AppController {constructor(private readonly appService: AppService) { }Get()getHello(Query(test, new ParseIntPipe({errorHttpStatusCode: HttpStatus.NOT_FOUND,})) test: string): string {return test 10;} }同时也可以抛出异常再进行处理 import { Controller, Get, HttpException, HttpStatus, ParseIntPipe, Query } from nestjs/common; import { AppService } from ./app.service;Controller() export class AppController {constructor(private readonly appService: AppService) { }Get()getHello(Query(test, new ParseIntPipe({errorHttpStatusCode: HttpStatus.NOT_FOUND,exceptionFactory(error) {console.log(error);throw new HttpException(测试报错 error, HttpStatus.NOT_IMPLEMENTED)},})) test: string): string {return test 10;} }2、ParseFloatPipe ParseFloatPipe 的作用是将参数转为float 类型我们新建一个接口 test import { Controller, Get, HttpException, HttpStatus, ParseFloatPipe, ParseIntPipe, Query } from nestjs/common; import { AppService } from ./app.service;Controller() export class AppController {constructor(private readonly appService: AppService) { }Get()getHello(Query(test, new ParseIntPipe({errorHttpStatusCode: HttpStatus.NOT_FOUND,exceptionFactory(error) {console.log(error);throw new HttpException(测试报错 error, HttpStatus.NOT_IMPLEMENTED)},})) test: string): string {return test 10;}Get(test)getTest(Query(test, ParseFloatPipe) test: number) {return test 10;} }访问 http://localhost:3000/test?test10.4同样可以new ParseFloatPipe 的形式传入 errorHttpStatusCode 和 exceptionFactory 3、ParseBoolPipe 用于将传入的字符串转换为布尔值。 Get(boolean)getBoolean(Query(test) test: boolean) {return test;}访问 http://localhost:3000/boolean?testfalse 4、ParseArrayPipe 用于将传入的字符串转换为数组。 Get(array)getArray(Query(test, ParseArrayPipe) test: number[]) {return test.reduce((pre, cur) pre cur, 0);}保存代码可以发现报错了 提示需要class-validator 这个包class-class-class-validator 允许使用基于装饰器和非装饰器的验证。 内部使用 validator.js 来执行验证。 pnpm install class-validator安装之后启动 发现还是报错 缺少 class-transformerclass-transformer 允许您将普通对象转换为类的某个实例反之亦然。 此外它还允许根据条件序列化/反序列化对象。 这个工具在前端和后端都非常有用。 pnpm install class-transformer 访问 http://localhost:3000/array?test1,2,3,4可以发现 每一项都提取出来了但是类型还是string 没有转换成number类型此时需要 new XxxPipe 的方式传入参数 Get(array)getArray(Query(test, new ParseArrayPipe({items: Number,})) test: number[]) {return test.reduce((pre, cur) pre cur, 0);}再次访问 http://localhost:3000/array?test1,2,3,4同时还可以指定传入时的分割符 separator: ‘/’, Get(array)getArray(Query(test, new ParseArrayPipe({items: Number,separator: /,})) test: number[]) {return test.reduce((pre, cur) pre cur, 0);}访问 http://localhost:3000/array?test1/2/3/4当我们没有传入参数的时候会报错我们可以通过设置 optional 来实现不传参数不报错 Get(array)getArray(Query(test, new ParseArrayPipe({items: Number,separator: /,optional: true,})) test: number[]) {return test}5、ParseEnumPipe 用于将传入的字符串转换为枚举类型。 import { Controller, Get, HttpException, HttpStatus, ParseArrayPipe, ParseEnumPipe, ParseFloatPipe, ParseIntPipe, Query } from nestjs/common; import { AppService } from ./app.service;enum TestEnum {A A111,B B111, }Controller() export class AppController {constructor(private readonly appService: AppService) { }Get()getHello(Query(test, new ParseIntPipe({errorHttpStatusCode: HttpStatus.NOT_FOUND,exceptionFactory(error) {console.log(error);throw new HttpException(测试报错 error, HttpStatus.NOT_IMPLEMENTED)},})) test: string): string {return test 10;}Get(test)getTest(Query(test, ParseFloatPipe) test: number) {return test 10;}Get(boolean)getBoolean(Query(test) test: boolean) {return test;}Get(array)getArray(Query(test, new ParseArrayPipe({items: Number,separator: /,optional: true,})) test: number[]) {return test}Get(enum/:test)getEnum(Query(test, new ParseEnumPipe(TestEnum)) test: TestEnum) {return test} }访问 http://localhost:3000/enum/111当我们传的参数不是枚举定义的类型时会报错访问 http://localhost:3000/enum/555 6、 ParseUUIDPipe 用于将传入的字符串转换为 UUID。在参数里可以用 ParseUUIDPipe 来校验是否是 UUID首先我们安装一下 uuid 用于生成uuid pnpm install uuid接着我们实现2个接口 getUuid getUuid2 import { Controller, Get, HttpException, HttpStatus, Param, ParseArrayPipe, ParseEnumPipe, ParseFloatPipe, ParseIntPipe, ParseUUIDPipe, Query } from nestjs/common; import { AppService } from ./app.service;const uuid require(uuid);enum TestEnum {A 111,B 222,C 333 }Controller() export class AppController {constructor(private readonly appService: AppService) { }Get()getHello(Query(test, new ParseIntPipe({errorHttpStatusCode: HttpStatus.NOT_FOUND,exceptionFactory(error) {console.log(error);throw new HttpException(测试报错 error, HttpStatus.NOT_IMPLEMENTED)},})) test: string): string {return test 10;}Get(test)getTest(Query(test, ParseFloatPipe) test: number) {return test 10;}Get(boolean)getBoolean(Query(test) test: boolean) {return test;}Get(array)getArray(Query(test, new ParseArrayPipe({items: Number,separator: /,optional: true,})) test: number[]) {return test}Get(enum/:test)getEnum(Param(test, new ParseEnumPipe(TestEnum)) e: TestEnum) {return e}Get(uuid)getUuid() {return uuid.v4()}Get(uuid/:uuid)getUuid2(Param(uuid, new ParseUUIDPipe) uuid: string) {return uuid} }访问 http://localhost:3000/uuid 获取uuid接着访问 http://localhost:3000/uuid/0a5c5ce9-22ff-4091-85ef-523fcb64223c 可以看到正常访问但是如果参数不是正常的uuid那么会报错http://localhost:3000/uuid/xxx 7、DefaultValuePipe 用于在传入的参数不存在时给参数设置一个默认值。创建一个接口 Get(default)getDefault(Query(test, new DefaultValuePipe(test)) test: string) {return test}当我们没传参数的时候 会使用默认值test http://localhost:3000/default当我们传参数之后将会返回参数 例如 http://localhost:3000/default?test123456 8、自定义Pipe 首先创建一个 pipe: nest g pipe www --flat --no-specwww.pipe.ts: import { ArgumentMetadata, Injectable, PipeTransform } from nestjs/common;Injectable() export class WwwPipe implements PipeTransform {transform(value: any, metadata: ArgumentMetadata) {console.log(value,metadata);return www;} }增加接口 Get(www)getWww(Query(test, WwwPipe) test: string, Query(test2, WwwPipe) test2: string) {return test test2}浏览器访问 http://localhost:3000/www?test1234test21这就是Pipe返回的值控制台打印了 value 就是 query、param 的值而 metadata 里包含 type、metatype、datatype 就是 Query、Param、Body 装饰器或者自定义装饰器metatype 是参数的 ts 类型data 参数值
http://www.w-s-a.com/news/339078/

相关文章:

  • 浙江网站建设公司南昌seo招聘
  • 工业软件有哪些专业seo站长工具全面查询网站
  • 山东兴华建设集团有限公司网站和京东一样做电子产品的网站
  • 网站建设谢辞关于h5的网站模板
  • 网站改版提交WordPress360收录
  • 省级网站 开发建设 资质在国外怎么做网站
  • 中商华兴建设有限公司网站我的世界查找建筑网站
  • 广东网站设计公司百度推广免费送网站
  • 高密做网站哪家好网站建设预算
  • 免费wordpress网站模板重庆如何做聚政网站
  • 人才网站app建设建议系统开发生命周期法的优点表现
  • 门户网站想要微信登录怎么做湖南网站seo推广
  • 襄阳 网站建设管理系统网站
  • 重庆工程建设招标投标交易信息网广州外贸seo优化
  • 一个一起做网站东莞设计兼职网站建设
  • 杭州网站程序开发公司在哪个公司建设网站好
  • 网店的网站设计方案济南手机建站价格
  • 网站做了301重定向域名会自动跳转吗唐山地方志网站建设
  • 学校网站建设说明书海南省建设执业资格注册管理中心网站
  • 东莞哪家网站建设好网站风格设定
  • 自驾游网站模板搭建wordpress步骤
  • wordpress视频网站上传视频提升学历是什么意思
  • 江西省城乡建设厅建设网站浙江建设
  • 网站联系我们页面临平做网站
  • 如何用网站做cpa交互比较好的网站
  • 一家只做特卖的网站wordpress修改模板教程
  • 与恶魔做交易的网站成都到西安高铁票价
  • 太原网站制作哪家便宜长春昆仑建设股份有限公司网站
  • 优质做网站价格设计手机商城网站建设
  • 高校网站建设制度无锡网站建设排名