文章转自 极客论坛
在上一节中,我们已经知道如何编写一个GET方法的路由
import { Controller, Get } from '@nestjs/common';
@Controller('v1')
export class V1Controller {
@Get('/hello')
sayHello() {
return 'Hello Controller!';
}
}
@Controller('v1')是类V1Controller的装饰器,表示V1Controller是一个Controller,URL前缀是/v1。v1是开篇所述的版本号,以后的版本可以用v2、v3等等。
@Get('/hello')是方法sayHello的装饰器,表示sayHello是一个路由,用HTTP GET方法访问,前缀是/hello。由于/hello在v1控制器内,所以完整的路径是/v1/hello。
那么,如何传递路由参数呢?
第一步,修改@Get装饰器,增加路由参数的占位符
import { Controller, Get } from '@nestjs/common';
@Controller('v1')
export class V1Controller {
@Get('/hello/:id')
sayHello() {
return 'Hello Controller!';
}
}
大家注意到,@Get装饰器后面的路径现在是/hello/:id,访问localhost:3000/v1/hello/1时,则传递了参数id,其值为1。
第二步,修改路由方法,增加形参
import { Controller, Get, Param } from '@nestjs/common';
@Controller('v1')
export class V1Controller {
@Get('/hello/:id')
sayHello(@Param() params) {
return 'Hello Controller!';
}
}
第三步,使用路由参数
import { Controller, Get, Param } from '@nestjs/common';
@Controller('v1')
export class V1Controller {
@Get('/hello/:id')
sayHello(@Param() params) {
return `Hello Controller ${params.id}`;
}
}