文章轉自 極客論壇
添加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'