ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Express中间件彻底讲透:5种中间件类型与执行顺序(Backend-NodeJS-Golang-Interview_QA高频面试题)

Express中间件彻底讲透:5种中间件类型与执行顺序(Backend-NodeJS-Golang-Interview_QA高频面试题) Express中间件彻底讲透5种中间件类型与执行顺序Backend-NodeJS-Golang-Interview_QA高频面试题【免费下载链接】Backend-NodeJS-Golang-Interview_QAA collection of Node JS and Golang Backend interview questions please feel free to fork and contribute to this repository项目地址: https://gitcode.com/gh_mirrors/ba/Backend-NodeJS-Golang-Interview_QA如果你是 Node.js 后端开发者面试时几乎绕不开Express中间件这个话题。它既是 Express 的灵魂也是最容易答不完整的考点。本文结合开源项目 Backend-NodeJS-Golang-Interview_QA 中收录的高频面试题用 10 分钟带你彻底搞懂 Express 中间件的 5 种类型、执行顺序和常见坑看完就能从容应对面试官的连环追问 一、Express中间件是什么新手也能秒懂的定义简单来说中间件Middleware就是请求-响应循环中的关卡。一个请求从进入服务器到返回响应会依次经过多个中间件函数每个中间件都能执行任意代码如日志、鉴权、数据校验✅修改请求对象req和响应对象res✅直接结束请求-响应循环直接返回结果✅调用next()把控制权交给下一个中间件 ✅在 Backend-NodeJS-Golang-Interview_QA 的 README.md 中这道原题What are the tasks that a middleware can do?的答案正是上面四点面试时直接背下来就能拿分。中间件处理请求时离不开req对象上的各种属性比如req.params路由参数、req.query查询字符串、req.body请求体等项目里这张图总结得非常清楚二、中间件执行顺序洋葱模型的秘密Express 中间件按注册顺序依次执行就像剥洋葱 ——请求从外层一层层向内响应再一层层向外。理解顺序关键在于记住 3 条铁律先注册先执行app.use()或app.get()的调用顺序就是执行顺序。next()是接力棒中间件只有调用next()请求才会继续流向下一个中间件不调用也不返回请求就会卡死。错误处理中间件放最后它必须声明在路由之后才能兜住前面抛出的所有错误。一个最简示例帮你建立直觉app.use((req, res, next) { console.log(第1关记录日志); next(); // 传给下一关 }); app.get(/, (req, res) { res.send(第2关返回响应); // 结束循环 });三、5种Express中间件类型逐一起底这是 README.md 中的原题What are the different types of middleware?标准答案是以下 5 种一个都不能漏。3.1 应用级中间件Application-level middleware通过app.use()或app.METHOD()绑定到app实例上的中间件作用于整个应用。比如全局日志、统一鉴权、请求体解析几乎每个 Express 项目都会用app.use(express.json()); // 解析 JSON 请求体 app.use(/api, authCheck); // 所有 /api 开头的请求先过鉴权3.2 路由级中间件Router-level middleware用express.Router()创建独立的路由模块再通过router.use()挂载中间件。它和应用级中间件用法几乎一样但只作用于该路由模块非常适合把用户、订单等业务拆分成独立文件代码更清爽。3.3 错误处理中间件Error-handling middleware唯一的区别是必须有 4 个参数(err, req, res, next)Express 靠参数个数识别它。集中处理所有错误返回统一的错误 JSON是生产环境的标配app.use((err, req, res, next) { console.error(err.stack); res.status(500).json({ message: 服务器开小差了~ }); });3.4 内置中间件Built-in middlewareExpress 自带的中间件无需额外安装最常见的有express.static()托管静态资源图片、CSS、JSexpress.json()解析 JSON 格式的请求体express.urlencoded()解析表单提交的数据比如托管public目录只需一行app.use(express.static(public))。3.5 第三方中间件Third-party middleware通过 npm 安装的社区中间件生态极其丰富面试常提的有中间件用途cors解决跨域问题express-session会话管理morganHTTP 请求日志multer文件上传以 CORS 为例app.use(cors())一行即可开启跨域README 中也有完整示例。四、一张表记住5种中间件类型与执行顺序类型挂载方式作用范围典型场景应用级app.use()整个应用日志、鉴权、解析 body路由级router.use()指定路由模块按业务拆分模块错误处理4 个参数全局兜底统一错误响应内置Express 自带全局静态资源、JSON 解析第三方npm 安装全局或局部CORS、Session、上传记忆口诀应用管全局、路由管模块、错误收尾、内置白送、第三方按需装✍️五、高频面试题速查这样回答稳拿分面试官最爱围绕中间件追问的 3 个问题给你标准回答思路中间件能做什么→ 背熟本文第一部分那 4 点任务清单。有哪些类型的中间件→ 5 种类型逐一列出每种补一个例子更显功底。如果中间件不调用 next() 会怎样→ 请求会一直挂起直到超时若已发送响应则请求结束后续中间件不再执行。六、总结Express中间件是后端面试绕不开的核心考点记住 5 种类型应用级、路由级、错误处理、内置、第三方理解next()串联出的执行顺序再背熟 README 中那两道原题答案这部分基本就稳了。想系统刷完 Node.js 与 Go 的后端面试题可以git clone https://gitcode.com/gh_mirrors/ba/Backend-NodeJS-Golang-Interview_QA把整个题库拉下来逐题过一遍配合文中的图片与示例复习效率翻倍 【免费下载链接】Backend-NodeJS-Golang-Interview_QAA collection of Node JS and Golang Backend interview questions please feel free to fork and contribute to this repository项目地址: https://gitcode.com/gh_mirrors/ba/Backend-NodeJS-Golang-Interview_QA创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表