MST

星途 面试题库

面试题:TypeScript装饰器在NestJS中的基础应用

请简述TypeScript装饰器在NestJS框架中用于定义控制器(Controller)的原理,并且举例说明如何使用装饰器为控制器设置路由前缀。
11.6万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

TypeScript装饰器在NestJS框架中定义控制器的原理

  1. 元数据(Metadata)机制:TypeScript装饰器允许在类、方法、属性等上面附加额外的元数据。NestJS利用这一特性,通过装饰器在控制器类上添加有关该控制器的各种元数据,如路由信息、中间件、守卫等配置。
  2. 反射(Reflection)机制:NestJS借助TypeScript的反射能力,在运行时能够读取这些通过装饰器附加的元数据。这样框架就可以根据这些元数据来确定如何创建、管理和使用控制器,比如如何将HTTP请求映射到控制器的相应方法。

举例说明如何使用装饰器为控制器设置路由前缀

import { Controller, Get, Module } from '@nestjs/common';

// 使用@Controller装饰器定义控制器,并设置路由前缀为'users'
@Controller('users')
export class UsersController {
  @Get()
  findAll() {
    return 'This action returns all users';
  }
}

@Module({
  controllers: [UsersController]
})
export class UsersModule {}

在上述代码中,@Controller('users')装饰器将UsersController类标记为一个控制器,并设置了路由前缀为users。这样,findAll方法对应的完整路由就是/users ,当有GET请求发送到/users时,findAll方法就会被调用。