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

· 约 4 分钟读完 · 第 29 / 144 章

推荐答案

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

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

本题详细解读

1. 路由参数的定义

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

2. 获取路由参数

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

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

3. 多个路由参数

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

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

4. 路由参数的验证

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

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

5. 路由参数的转换

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

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