Web后台服务开发——GET方法和路由参数

文章转自 极客论坛

在上一节中,我们已经知道如何编写一个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}`;

   }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章