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}`;
    }
}

猜你喜欢

转载自blog.csdn.net/DaChengXiaoShi/article/details/89876719