Express 实现统一 404 JSON 响应应该把中间件放在哪里,为什么?
围绕“Express 实现统一 404 JSON 响应应该把中间件放在哪里,为什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 404 处理器注册在所有路由之后、且无错误时最后兜底,区别于错误处理中间件的位置,不讲静态资源 404。
全栈开发 · 路由面试题第 1 页,显示第 1–17 题,共找到 17 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“Express 实现统一 404 JSON 响应应该把中间件放在哪里,为什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 404 处理器注册在所有路由之后、且无错误时最后兜底,区别于错误处理中间件的位置,不讲静态资源 404。
本文解释Express中app.use与router.use挂载中间件的核心区别:作用域不同、路径前缀计算方式不同、中间件隔离效果不同。通过具体场景说明何时用router.use隔离中间件,以及路径拼写错误带来的失效问题。
围绕“Express 4 与 Express 5 对异步路由抛错的处理有什么关键差异”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 Express 4 需要 try/catch 或包装器手动 next(err),Express 5 自动转发 rejected。
围绕“express-validator 的校验链如何在路由中工作,validationResult 必须在何处读取”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 body()/param() 链作为中间件运行、validationResult(req) 在后续 handler 中取错并短。
围绕“为什么 Express 接口不能直接把 req.body 整体传给数据库层,白名单过滤怎么做”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明越权写字段(如 role)的风险,并给出在路由层用 pick/解构白名单的方案位置,不讲 ORM 层防护。
本题说明 Express 中间件执行由注册顺序与路径前缀匹配共同决定,并演示错误处理中间件写在路由之前为何失效,给出正确的分层顺序与判断边界。
围绕“cors、helmet、compression 这类 Express 中间件分别解决什么问题,挂载顺序有无讲究”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须逐一说明三者的单一职责,并指出 helmet/cors 应尽早、compression 在静态与路由之前的顺序原则,不讲各自配置项全。
围绕“Express 的 app.route() 链式定义相比分散写 app.get/app.post 解决什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明同一路径多方法聚合、避免路径字符串重复带来的不一致,不讲 Router 模块化。
围绕“Express 路由匹配默认是否区分大小写与末尾斜杠,如何调整这两个行为”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明默认不区分大小写且忽略尾斜杠,以及 case sensitive routing 与 strict routing 两个 app。
本题明确Express一个路由挂多个处理函数时的执行规则:回调数组或多次参数都按注册顺序执行,由next()移交控制权;任一回调发送响应即终止。文中区分普通next与next('route'),并给出实际判断方法。
围绕“Express 的 app.param() 能在什么时候复用参数处理逻辑,典型用途是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 param 回调在任何含该参数的路由之前触发、可用于加载实体并挂到 req。
围绕“Express 路由路径参数(如 /users/:id)如何匹配与解析,同名参数冲突会怎样”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 :name 的匹配规则、req.params 取值与 URL 解码,并指出同一中间件链上挂载前缀也含参数时的合并行为。
围绕“Express 路由中的通配符与正则路径在 Express 4 和 Express 5 中有什么写法差异”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出 Express 5 升级 path-to-regexp 后 * 等写法的破坏性变化及替代语法,不讲普通静态路径匹配。
本文解释 express.Router 如何模块化路由,重点说明 app.use 的挂载路径与 router 内部路径的拼接规则、根路径映射,以及父路径参数需 mergeParams 才能访问的边界。
围绕“在 Express 4 中如何用包装函数让异步路由的异常统一进入错误处理中间件”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出高阶函数包裹 handler 并 .catch(next) 的实现思路及其局限(中间件链内同步抛错仍需注意),不讲 Expres。
围绕“全局注册 NestJS 认证守卫后如何让某些路由跳过认证”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出基于元数据的 IS_PUBLIC 豁免模式及守卫内 reflector.getAllAndOverride 的读取。
围绕“NestJS 中间件无法拿到路由处理器的哪些信息,导致应改用拦截器”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖指出中间件在路由匹配前后执行、缺少 handler/class 元数据这一关键限制。