nestJs(二)node项目发送请求

 整体演示

 Get 请求参数

Get 请求的参数一般会放在 URL 上,这只需要@Query 装饰器就行了。

Post 参数

Post 参数有些不同,会用到 DTO 的传输。因为数据通过 HTTP 传输是文本类型,因此需要将文本类型转化成代码可识别的变量。

新建 students.dto.ts

(在这里需要安装class-validator用npm,不装的话这样写:

// src/students/dtos/students.dto.ts
export class StudentDto {
    name: string;
}

)

post 方法传递的参数是通过请求 body 给到后台的。需要通过 @Body 装饰器解析 Body 中的数据。

参数限制与转换

 Get 请求

get 请求需要用到 ParseIntPipe, 更多的内置管道列表可查看这里

浏览器访问的 url 默认是 string 类型,ParseIntPipe 管道能将 string 类型转化成 number 类型

这次我们实现的是通过 id 查找学生姓名。

Post 请求

Post 请求略微有些不一样,要用到 class-validator

安装 class-validator

npm i --save class-validator class-transformer

 修改 main.ts

// main.ts
import { NestFactory } from '@nestjs/core';
import { ValidationPipe } from '@nestjs/common';
import { AppModule } from './app.module';


async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.useGlobalPipes(new ValidationPipe());
  await app.listen(3000);
}
bootstrap();

修改 student.dto.ts

import { IsNotEmpty, IsString } from 'class-validator';

export class StudentDto {
    @IsNotEmpty()
    @IsString()
    name: string;
}

自定义装饰器

在 post 请求用到了大量的装饰器,系统装饰器能满足大部分场景,但是有些特定需求时,需要自定义装饰器。

例如这样一个场景:每个请求都会带上 user 字段。代表是谁做的请求,每次在代码里 getUser 是非常难受的事情,这时自定义装饰器就派上了用场。

新建 src/common/decorators.ts

修改 students.controller.ts

 

日志

后台接口请求常伴随日志产生,日志对后台查问题至关重要。NestJs 框架也集成了日志,开箱即用。

使用日志分为三步:

  • main.ts 引入 Logger
  • 模块引入日志组建: private readonly logger = new Logger(StudentsService.name);
  • 在需要打印的地方引入: this.logger.log(`student name is ${name}`);

修改main.ts

引用 Logger 组建

控制台输出

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值