Nest.js 的控制器 (Controller) 是什么?

推荐答案

在 Nest.js 中,控制器 (Controller) 是处理传入请求并返回响应的核心组件。它负责接收客户端请求,调用相应的服务层逻辑,并将结果返回给客户端。控制器通常与路由相关联,定义了应用程序的 API 端点。

本题详细解读

控制器的定义

在 Nest.js 中,控制器是通过装饰器 @Controller() 来定义的。这个装饰器可以接受一个路径参数,用于指定该控制器处理的根路由。例如:

在这个例子中,UsersController 将处理所有以 /users 开头的请求。

控制器方法

控制器中的方法通常使用 HTTP 方法装饰器来定义,例如 @Get()@Post()@Put()@Delete() 等。这些装饰器指定了该方法处理的 HTTP 请求类型和路径。例如:

这个方法将处理对 /users 的 GET 请求,并返回一个字符串。

请求和响应对象

控制器方法可以访问请求和响应对象。Nest.js 提供了 @Req()@Res() 装饰器来注入这些对象。例如:

依赖注入

Nest.js 支持依赖注入,控制器可以通过构造函数注入服务层或其他依赖项。例如:

-- -------------------- ---- -------
--------------------
------ ----- --------------- -
  ------------------- -------- ------------- ------------- --

  ------
  ---------- ------ -
    ------ ----------------------------
  -
-

在这个例子中,UsersService 被注入到 UsersController 中,并在 findAll 方法中被调用。

路由参数和查询参数

控制器方法可以通过装饰器 @Param()@Query() 来访问路由参数和查询参数。例如:

总结

控制器是 Nest.js 应用程序中处理请求和响应的核心部分。通过使用装饰器,开发者可以轻松定义路由、访问请求和响应对象、注入依赖项以及处理路由参数和查询参数。

纠错
反馈