如何在 Nest.js 中定义路由?

推荐答案

在 Nest.js 中,路由可以通过控制器(Controller)来定义。控制器负责处理传入的请求并返回响应。路由的定义通常是通过装饰器来实现的,以下是定义路由的基本步骤:

  1. 创建控制器:使用 @Controller() 装饰器定义一个控制器类。
  2. 定义路由:在控制器类中,使用 @Get()@Post()@Put()@Delete() 等装饰器来定义具体的路由。

示例代码:

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

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

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

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

在这个示例中:

  • @Controller('users') 定义了一个基础路由 /users
  • @Get() 定义了一个处理 GET 请求的路由 /users
  • @Get(':id') 定义了一个处理 GET 请求的路由 /users/:id
  • @Post() 定义了一个处理 POST 请求的路由 /users

本题详细解读

1. 控制器的定义

在 Nest.js 中,控制器是处理 HTTP 请求的核心部分。通过 @Controller() 装饰器,你可以定义一个控制器类,并指定该控制器的基本路由路径。例如,@Controller('users') 表示该控制器处理的所有路由都将以 /users 为前缀。

2. 路由方法的定义

在控制器类中,你可以定义多个方法来处理不同的 HTTP 请求。每个方法都可以通过特定的装饰器来定义其对应的 HTTP 方法和路由路径。

  • @Get():用于处理 GET 请求。你可以指定一个路径参数,例如 @Get(':id'),表示处理 /users/:id 的 GET 请求。
  • @Post():用于处理 POST 请求。通常用于创建资源。
  • @Put():用于处理 PUT 请求。通常用于更新资源。
  • @Delete():用于处理 DELETE 请求。通常用于删除资源。

3. 请求参数的获取

在路由处理方法中,你可以通过装饰器来获取请求中的参数、查询参数、请求体等。

  • @Param():用于获取路由参数。例如,@Param('id') 可以获取 /users/:id 中的 id 值。
  • @Body():用于获取请求体中的数据。通常用于 POST 或 PUT 请求。
  • @Query():用于获取查询参数。例如,@Query('name') 可以获取 /users?name=John 中的 name 值。

4. 路由的响应

路由处理方法可以返回任何类型的数据,Nest.js 会自动将其序列化为 JSON 格式并发送给客户端。你也可以手动返回一个 Response 对象来控制响应的状态码、头信息等。

5. 路由的模块化

在 Nest.js 中,控制器通常属于某个模块(Module)。你需要将控制器注册到模块中,以便 Nest.js 能够识别并处理这些路由。

通过这种方式,你可以将路由逻辑模块化,便于管理和维护。

纠错
反馈