网站服务器 重启,石家庄权威发布,我英文网站建设,商贸营销型网站案例核心目标掌握 Express 路由、请求 / 响应处理、中间件#xff08;核心概念#xff09;路由进阶#xff08;GET/POST 请求#xff09;getvar express require(express);
var router express.Router();// GET 请求#xff1a;获取用户列表
router.get(/list, (req, res) 核心概念路由进阶GET/POST 请求getvar express require(express); var router express.Router(); // GET 请求获取用户列表 router.get(/list, (req, res) { res.json({ code: 200, msg: 获取用户列表成功, data: [ { id: 1, name: 张三 }, { id: 2, name: 李四 } ] }); }); module.exports router;在app.js中注册路由var userRouter require(./routes/user); app.use(/api/user, userRouter); // 接口前缀 /api/user处理 POST 请求安装解析 POST 请求的中间件npm install body-parser处理前端json传参。在 app.js 中引入并配置var bodyParser require(body-parser); // 解析 JSON 格式的请求体前端 Axios 默认提交格式 app.use(bodyParser.json()); // 解析表单格式的请求体 app.use(bodyParser.urlencoded({ extended: false }));// POST 请求新增用户 router.post(/add, (req, res) { // 获取前端传递的参数req.body 类比前端的请求体 const { name, age } req.body; res.json({ code: 200, msg: 新增用户 ${name} 成功, data: { id: 3, name, age } }); });中间件核心Express 中间件是框架的 “灵魂”本质是可链式执行的函数用于拦截和处理 HTTP 请求 - 响应周期的任意环节。它既可以完成通用逻辑如跨域、日志、请求体解析也能实现业务逻辑如权限校验、数据预处理是 Express 实现灵活扩展的核心机制。一基础必备中间件90% 项目必用中间件 / 能力类型核心作用极简用法express.json()内置解析 JSON 格式请求体替代 body-parserapp.use(express.json());express.urlencoded()内置解析表单x-www-form-urlencoded请求体app.use(express.urlencoded({ extended: true }));express.static()内置托管静态文件CSS/JS/ 图片 / HTMLapp.use(express.static(public)); // 或加虚拟前缀app.use(/static, express.static(public))cors第三方便捷处理跨域替代手动写跨域头npm i cors → const cors require(cors); app.use(cors());morgan第三方记录 HTTP 请求日志开发 / 生产环境适配npm i morgan → const morgan require(morgan); app.use(morgan(dev));express.json()/urlencoded()替代了老版本的body-parser无需额外安装cors支持精细化配置如仅允许指定域名app.use(cors({ origin: https://your-domain.com })); // 仅允许该域名跨域morgan的日志格式dev开发环境简洁、combined生产环境符合 Apache 标准。二、身份认证 / 权限中间件业务核心解决 “登录校验、权限控制” 等核心业务需求是前后端分离项目的必备。中间件类型核心作用极简用法express-jwt第三方解析 JWT Token实现无状态身份认证npm i express-jwt jsonwebtoken →const jwt require(express-jwt);app.use(jwt({ secret: your-secret, algorithms: [HS256] }).unless({ path: [/api/login] }));passport第三方多策略认证用户名密码 / 微信 / Google 等npm i passport passport-local → 配合策略配置实现多方式登录express-session第三方基于 session 的身份认证有状态npm i express-session →app.use(session({ secret: key, resave: false, saveUninitialized: true }));关键补充express-jwt的unless()用于指定 “无需校验的路径”如登录接口express-session需配合cookie-parser使用存储 sessionID适合传统服务端渲染项目生产环境中express-jwt的 secret 需用环境变量存储避免硬编码。三、安全加固中间件生产环境必备提升项目的安全性防御常见的 Web 攻击如 XSS、CSRF、HTTP 头漏洞。中间件类型核心作用极简用法helmet第三方自动设置安全 HTTP 头防 XSS / 点击劫持等npm i helmet → const helmet require(helmet); app.use(helmet());csurf第三方防御 CSRF 攻击生成 / 验证 CSRF Tokennpm i csurf → 配合 session/cookie 实现 CSRF 校验rate-limit第三方接口限流防暴力请求 / DDOSnpm i express-rate-limit →const limiter rateLimit({ windowMs: 15*60*1000, max: 100 });app.use(/api/, limiter);cookie-parser第三方解析 Cookie 数据配合 session/jwt 使用npm i cookie-parser → const cookieParser require(cookie-parser); app.use(cookieParser());关键补充helmet是 “安全头合集”默认开启 10 种安全防护如 Content-Security-Policy、X-XSS-Protectionrate-limit的windowMs是时间窗口如 15 分钟max是窗口内最大请求数如 100 次。四、开发效率 / 调试中间件开发环境专用提升开发效率减少重复工作如热重载、接口文档、错误美化。中间件类型核心作用极简用法nodemon开发依赖代码热重载修改后自动重启服务npm i nodemon -D → package.json 加脚本dev: nodemon app.jsexpress-swagger-generator第三方自动生成 Swagger 接口文档npm i express-swagger-generator → 配置后自动生成 /api-docs 文档页面debug第三方精细化日志调试按模块开关日志npm i debug → const debug require(debug)(app:main); debug(启动服务);express-error-handler第三方美化错误页面开发环境npm i express-error-handler → 替代原生错误中间件返回可视化错误栈关键补充nodemon仅用于开发环境生产环境用node app.js启动debug可通过环境变量DEBUGapp:*控制日志输出如DEBUGapp:router仅打印路由模块日志。五、文件处理 / 数据处理中间件解决 “文件上传、数据验证、数据格式化” 等业务场景需求中间件类型核心作用极简用法multer第三方处理文件上传multipart/form-data 格式npm i multer →const multer require(multer);const upload multer({ dest: uploads/ });app.post(/upload, upload.single(file), (req, res) {});joi/express-validator第三方接口参数校验防非法数据npm i express-validator → 路由中校验 req.body/req.query 字段compression第三方响应数据压缩gzip提升传输速度npm i compression → const compression require(compression); app.use(compression());关键补充multer是唯一能处理multipart/form-data的中间件body-parser不支持express-validator支持链式校验如check(username).notEmpty().isLength({ min: 6 })compression自动压缩响应体如 JSON/HTML可减少 70% 传输体积。六、自定义通用中间件高频自定义场景除了第三方中间件以下自定义中间件也是项目中高频用到的可直接复用自定义中间件核心作用核心代码片段统一响应格式规范接口返回格式如 {code, msg, data}app.use((req, res, next) { res.success (data) res.json({ code:200, msg:成功, data }); next(); });接口耗时统计记录每个接口的响应耗时性能分析app.use((req, res, next) { const start Date.now(); res.on(finish, () console.log({Date.now()-start}ms)); next(); });接口白名单校验仅允许指定 IP / 域名访问接口app.use((req, res, next) { const whiteList [127.0.0.1]; if (!whiteList.includes(req.ip)) return res.status(403).send(禁止访问); next(); });