文章转自 极客论坛
添加POST方法的路由分一下几个步骤
第一步,添加@Post装饰器
import { Controller, Get, Param, Post, Body } from '@nestjs/common';
@Controller('v1')
export class V1Controller {
@Get('/hello/:id')
sayHello(@Param() params) {
return `Hello Controller ${params.id}`;
}
@Post('/hi')
sayHi() {
}
}
第二步,创建DTO(Data Transfer Object),就是描述数据格式的类型
在src目录中创建dto目录,然后进入dto目录执行 nest generate class hiDto,这时代码结构如下
我们打开hi-dto.ts,给HiDto类添加字段
export class HiDto {
readonly name: string;
readonly age: number;
}
这表示,我们正在编写的路由接受的参数是形如 { "name": "Tom", "age": 10} 这样的json数据。
第三步,重新修改我们的controller文件,添加@Body装饰器
import { Controller, Get, Param, Post, Body } from '@nestjs/common';
import { HiDto } from 'src/dto/hi-dto';
@Controller('v1')
export class V1Controller {
@Get('/hello/:id')
sayHello(@Param() params) {
return `Hello Controller ${params.id}`;
}
@Post('/hi')
sayHi(@Body() hiDto: HiDto) {
}
}
第四步,使用POST参数
import { Controller, Get, Param, Post, Body } from '@nestjs/common';
import { HiDto } from 'src/dto/hi-dto';
@Controller('v1')
export class V1Controller {
@Get('/hello/:id')
sayHello(@Param() params) {
return `Hello Controller ${params.id}`;
}
@Post('/hi')
sayHi(@Body() hiDto: HiDto) {
console.log(hiDto);
return hiDto;
}
}
hiDto就是POST传递的参数。
第五步,用curl发送一个请求,测试路由
首先,运行项目,npm run start;
其次,打开git bash,用curl发送命令。(当然,你也可以学习一下postman这个工具)
curl http://localhost:3000/v1/hi -X POST -d '{"name": "Tom", "age": 10}' -H 'Content-Type: application/json'