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

做像美团淘宝平台网站多少钱营销软件哪个好

做像美团淘宝平台网站多少钱,营销软件哪个好,网站开发用mvc多吗,北京软件开发公司推荐在此之前我们用到的请求都是get请求,接下来我们使用post 请求 并接收参数,通过 Body 装饰器来取注意:post请求带参数 我们通过游览器路径是直接请求不了的 需要使用postman 来发 post 请求postman 下载网站 https://www.postman.com/download…


在此之前我们用到的请求都是get请求,接下来我们使用post 请求 并接收参数,通过 @Body 装饰器来取
注意:post请求带参数 我们通过游览器路径是直接请求不了的 需要使用postman 来发 post 请求
postman 下载网站 https://www.postman.com/downloads

首先 post 请求参数 我们需要通过一个dto class 来接收,
先创建一个 dto class 名称:test.dto.ts

export class TestDto {id: number;name: string;age: number;
}

增加post接口:

@Post('postTest')postTest(@Body() obj: TestDto) {console.log(obj);return '调用成功'}

使用postman调用接口 传参数
1719146719945.png
可以看到控制台接收了JSON数据1719146735879.png
我们再调用接口 age参数传11.23 也能调用成功 但是我在dto定义的时候 只定义了age 为number 但是传浮点数也能传,这个可能会导致后面的逻辑错误,所以就需要用到 ValidationPipe
1719146772995.png
我们需要2个包:

npm install class-validator class-transformer

修改postTest 接口 在body接收参数使用 ValidationPipe

@Post('postTest')postTest(@Body(new ValidationPipe()) obj: TestDto) {console.log(obj);return '调用成功'}

接着我们在test.dto.ts进行修改:

import { IsInt } from "class-validator";export class TestDto {id: number;name: string;@IsInt()age: number;
}

再次请求 可以发现报错了
1719147134135.png
我们使用的 @IsInt() 是来自于 class-validator,
class-validator提供了基于装饰器声明的规则对对象做校验的功能
class-transformer 是把一个普通对象转换为某个 class 的实例对象
以上两者结合实现了 ValidationPipe

流程如下:
我们创建了一个dto类 ----> 接着在pipe拿到类 将参数通过class-transformer 转换为 dto 类的对象,最后使用class-validator 包来对这个对象做验证

我们可以自己来实现ValidationPipe 类:

nest g pipe my-validation --flat --no-spec
import { ArgumentMetadata, BadRequestException, Injectable, PipeTransform } from '@nestjs/common';
import { plainToInstance } from 'class-transformer';
import { validate } from 'class-validator';@Injectable()
export class MyValidationPipe implements PipeTransform<any> {async transform(value: any, { metatype }: ArgumentMetadata) {if (!metatype) {return value;}const object = plainToInstance(metatype, value);const errors = await validate(object);if (errors.length > 0) {throw new BadRequestException('参数验证失败');}return value;}
}

metatype 拿到的就是下面 TestDto ,如果没有声明Dto则无法进行转换和验证
1719148127975.png
如果有metatype则进行下一步通过 class-transformer 的 plainToInstance 把普通对象转换为 dto class 的实例对象
最后进行验证 调用 class-validator 包的 validate api
我们来使用看一下效果:

@Post('postTest')postTest(@Body(new MyValidationPipe()) obj: TestDto) {console.log(obj);return '调用成功'}

再次调用
1719148463518.png
可以发现检测出了错误 当然以上只是个例子 并不完善 所以使用的时候还是所以内置的 ValidationPipe

http://www.mmbaike.com/news/27238.html

相关文章:

  • 公司网站建设流程百度企业官网认证
  • 鹤壁做网站哪家便宜2023年3月份疫情严重
  • 建设网站服务电脑培训班在哪里有最近的
  • 汽车行业网站建设比较好宁波seo优化外包公司
  • 网站建设來选宙斯站长网络推广公司哪家好
  • 济南优化网站技术深圳seo优化外包
  • 云翼计划wordpress百度关键词优化服务
  • 门户网站开发工作室2021最近比较火的营销事件
  • 仿笑话网站源码网络推广员是什么工作
  • 帮别人做网站赚钱吗站长之家ip地址归属查询
  • wordpress主题付费下载厦门百度seo
  • 百度医院网站建设百度推广后台登陆首页
  • wordpress无法连接到ftp服务器天津百度seo排名优化
  • 中国风电商网站建设5118营销大数据
  • 长沙正规企业网站制作平台今日疫情最新数据
  • 简约网站设计欣赏电商的推广方式有哪些
  • 体育局网站建设百度关键词点击
  • 怎么在网上免费做公司网站seo自学网官方
  • 惠州做网站电话广东清远今天疫情实时动态防控
  • 优质的响应式网站建设泰安做网站公司
  • 宿迁房产网官方网站长沙疫情最新情况
  • 郑州微信网站建设如何创建一个网站
  • 沧州网站建设哪家好临沂网站建设公司哪家好
  • 韩国做美食网站有哪些免费b站推广入口2023
  • 免费公司网站怎么做ip网站查询服务器
  • 做seo用什么网站系统网络宣传方式有哪些
  • 一加网站开发百度怎么转人工客服
  • 培训加盟网站建设旅游营销推广方案
  • 网络推广公司哪里好扬州整站seo
  • 什么做网站开发厦门人才网最新招聘信息