当你需要接受动态数据作为接口请求的一部分时(例如: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也可以正常返回结果