前端/移动开发面试题更新 2026-08-05

请说明在 Express 框架中,针对未匹配到任何路由的请求,应当采用何种方式来处理并返回 404 响应?

前端/移动开发技术原理方案权衡ExpressNode.js

考察说明

考查对 Express 中间件机制和错误处理流程的理解,以及常见 404 场景的处理方式。

回答思路

  1. 【回答框架 1】Express 中 404 处理的核心是中间件机制。在 Express 中,所有未匹配到路由的请求都会沿着中间件栈继续向后传递,最终如果没有相应的处理,就会由默认的 finalhandler 返回 404。为了自定义 404 响应,可以在所有路由注册之后,添加一个普通的中间件函数,该函数不检查任何路径,对任何请求直接返回 404 状态码,并可以附带自定义的响应体。
  2. 【回答框架 2】典型的实现方式是在所有路由之后,调用 app.use() 注册一个不接受路径参数的中间件,例如 app.use(function(req,res){ res.status(404).send('Not Found') })。这个中间件会捕获所有未被前面路由处理的请求,并设置状态码为 404。
  3. 【回答框架 3】如果需要更完整的错误处理,可以利用 Express 的错误处理中间件,该中间件有四个参数(err, req, res, next),通常放在所有中间件的最后。但注意,错误处理中间件主要用于处理 next(err) 传入的错误,而 404 是正常的中间件流结果,不是错误对象,所以通常 404 用普通中间件处理。
  4. 【回答框架 4】另外,对于 API 接口,可能还需要根据请求的 Accept 头返回 JSON 格式的 404 响应,例如 res.status(404).json({ error: 'Not Found' })。
  5. 【关键点 1】404 处理通过在所有路由之后注册一个普通中间件实现。
  6. 【关键点 2】该中间件不接收路径参数,对所有请求返回 404 状态码。
  7. 【关键点 3】错误处理中间件(四参数)与 404 中间件不同,用于处理 next(err) 传入的错误。
  8. 【易错点 1】将 404 中间件放在路由之前会导致所有请求都返回 404。
  9. 【易错点 2】使用错误处理中间件直接返回 404 可能无法捕获未传入 next(err) 的请求。
  10. 【易错点 3】若未自定义 404,默认响应体可能不符合项目需求。