Nest.js 中如何使用路由参数?

推荐答案

在 Nest.js 中,路由参数可以通过在路由路径中使用冒号 (:) 来定义,并在控制器方法中使用 @Param() 装饰器来获取。

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

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

在这个例子中,:id 是一个路由参数,@Param('id') 用于获取该参数的值。

本题详细解读

1. 路由参数的定义

在 Nest.js 中,路由参数是通过在路由路径中使用冒号 (:) 来定义的。例如,:id 表示一个名为 id 的路由参数。当客户端请求匹配该路由时,Nest.js 会自动提取路径中的参数值。

2. 获取路由参数

为了在控制器方法中获取路由参数,可以使用 @Param() 装饰器。@Param() 装饰器可以接受一个参数,用于指定要获取的路由参数的名称。如果不传递参数,@Param() 将返回一个包含所有路由参数的对象。

在这个例子中,@Param('id') 用于获取 id 参数的值,并将其传递给 findOne 方法。

3. 多个路由参数

如果路由路径中有多个参数,可以分别使用 @Param() 装饰器来获取每个参数,或者使用一个对象来获取所有参数。

在这个例子中,@Param() 返回一个包含 idname 参数的对象。

4. 路由参数的验证

Nest.js 支持对路由参数进行验证。可以使用 ValidationPipe 和 DTO(数据传输对象)来验证路由参数的类型和格式。

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

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

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

在这个例子中,UserIdDto 类定义了 id 参数的类型和验证规则,ValidationPipe 用于验证路由参数。

5. 路由参数的转换

Nest.js 支持将路由参数自动转换为指定的类型。例如,可以将字符串类型的 id 参数转换为数字类型。

在这个例子中,ParseIntPipeid 参数从字符串转换为数字。

纠错
反馈