推荐答案
控制器的概念
在 NestJS 中,控制器(Controllers)负责处理传入的 HTTP 请求并返回响应。控制器是 NestJS 应用程序的核心部分,它们定义了路由和处理程序方法,这些方法处理特定的 HTTP 请求(如 GET、POST、PUT、DELETE 等)。
控制器的创建
要创建一个控制器,可以使用 NestJS 提供的装饰器 @Controller()
。这个装饰器接受一个可选的路由前缀参数,用于定义该控制器下的所有路由的基础路径。
-- -------------------- ---- ------- ------ - ----------- --- - ---- ----------------- ------------------- ------ ----- -------------- - ------ ---------- ------ - ------ ----- ------ ------- --- ------ - -
控制器的使用
在上述代码中,@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 变得更加简单和高效。