推荐答案
控制器的概念
在 NestJS 中,控制器(Controllers)负责处理传入的 HTTP 请求并返回响应。控制器是 NestJS 应用程序的核心部分,它们定义了路由和处理程序方法,这些方法处理特定的 HTTP 请求(如 GET、POST、PUT、DELETE 等)。
控制器的创建
要创建一个控制器,可以使用 NestJS 提供的装饰器 @Controller()。这个装饰器接受一个可选的路由前缀参数,用于定义该控制器下的所有路由的基础路径。
// www.javascriptcn.com code example
import { Controller, Get } from '@nestjs/common';
@Controller('cats')
export class CatsController {
@Get()
findAll(): string {
return 'This action returns all cats';
}
}控制器的使用
在上述代码中,@Controller('cats') 定义了一个基础路径为 /cats 的控制器。@Get() 装饰器定义了一个处理 GET 请求的路由,当访问 /cats 时,findAll 方法将被调用并返回字符串 'This action returns all cats'。
本题详细解读
控制器的职责
控制器的主要职责是处理 HTTP 请求并返回响应。它们通常包含多个路由处理程序方法,每个方法对应一个特定的 HTTP 请求方法和路径。
路由处理程序方法
路由处理程序方法使用 HTTP 方法装饰器(如 @Get()、@Post()、@Put()、@Delete() 等)来定义它们处理的请求类型。这些装饰器可以接受一个路径参数,用于定义具体的路由路径。
@Get('profile')
getProfile(): string {
return 'This is the profile page';
}请求和响应对象
在 NestJS 中,控制器方法可以访问请求和响应对象。这些对象可以通过装饰器注入到方法中。
@Get(':id')
findOne(@Param('id') id: string): string {
return `This action returns a #${id} cat`;
}依赖注入
NestJS 支持依赖注入,控制器可以通过构造函数注入服务(Services)或其他依赖项。
constructor(private readonly catsService: CatsService) {}
@Get()
findAll(): string {
return this.catsService.findAll();
}总结
通过使用控制器,开发者可以轻松地定义和管理应用程序的路由和请求处理逻辑。NestJS 的控制器机制使得构建 RESTful API 变得更加简单和高效。