文章轉自 極客論壇
在上一節中,我們已經知道如何編寫一個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}`;
}
}