当你需要接受动态数据作为接口请求的一部分时(例如:GET请求 /cats/1 获取 id 为 1 的数据)
可以在路径中添加路由参数的标记 :参数名
,捕捉该位置的动态值
将@Param()
装饰器加在函数接收参数的位置中,然后使用
1. 写法
import { Controller, Get, Param } from '@nestjs/common';
@Controller('cats')
export class CatsController {
// 接收动态参数
@Get(':id')
findOne(@Param() params): string {
return '路由参数为:'+params.id;
}
}
2. 注意
需要注意的是,接收路由参数的路由和其他路由同时存在时,要将有路由参数的函数放入最后,否则其他函数会被影响
错误示例
下面示例中,路由参数的函数放在其他函数上面,导致其他函数不能正常的返回结果
import { Controller, Get, Param } from '@nestjs/common';
@Controller('cats')
export class CatsController {
//接收动态参数
@Get(':id')
findOne(@Param() params): string {
return '路由参数为:'+params.id;
}
// 获取列表
@Get('getList')
findTwo(): string[] {
return ['1', '2', '3'];
}
}
路由参数正常返回结果
getList却被当成路由参数给处理了
正确示例
下面示例中,路由参数的函数放在了底部,getList接口可以正常返回数据
import { Controller, Get, Param } from '@nestjs/common';
@Controller('cats')
export class CatsController {
// 获取列表
@Get('getList')
findTwo(): string[] {
return ['1', '2', '3'];
}
//接收动态参数
@Get(':id')
findOne(@Param() params): string {
return '路由参数为:'+params.id;
}
}
路由参数正常返回结果
getList也可以正常返回结果