Express 面试题
目录

Express 的 app.param 有什么作用?

· 约 4 分钟读完 · 第 38 / 120 章

推荐答案

app.param 是 Express 框架中的一个方法,用于在处理路由之前对路由参数进行预处理。它允许你在路由处理函数执行之前,对特定的路由参数进行统一的处理或验证。通过 app.param,你可以为某个参数定义一个回调函数,当该参数出现在路由中时,Express 会自动调用这个回调函数。

本题详细解读

1. app.param 的基本用法

app.param 方法接受两个参数:参数名和一个回调函数。回调函数有三个参数:req、res 和 next,以及一个额外的参数 value,表示当前路由参数的值。

在上面的例子中,app.param 会拦截所有包含 userId 参数的路由,并在路由处理函数执行之前,先执行这个回调函数。回调函数中,我们通过 userId 查找用户,并将找到的用户对象附加到 req 对象上,以便后续的路由处理函数使用。

2. app.param 的应用场景

app.param 通常用于以下场景:

  • 参数验证:在路由处理之前,验证参数的有效性。例如,检查用户 ID 是否存在。
  • 数据预处理:在路由处理之前,对参数进行预处理。例如,根据用户 ID 查找用户信息,并将用户信息附加到 req 对象上。
  • 统一处理:对多个路由中的相同参数进行统一处理,避免在每个路由处理函数中重复相同的逻辑。

3. app.param 的注意事项

  • 顺序问题:app.param 的定义顺序会影响其执行顺序。如果多个 app.param 回调函数都处理同一个参数,它们会按照定义的顺序依次执行。
  • 性能考虑:由于 app.param 会在每个匹配的路由中执行,因此应避免在其中执行耗时的操作,以免影响整体性能。

4. 示例代码

以下是一个完整的示例,展示了如何使用 app.param 来处理用户 ID 参数:

在这个示例中,当访问 /users/1 时,app.param 会先查找用户 ID 为 1 的用户,并将其附加到 req.user 上。然后,路由处理函数会返回该用户的名字。