防城港市网站建设_网站建设公司_前端开发_seo优化
2025/12/17 13:21:10 网站建设 项目流程

核心目标

掌握 Express 路由、请求 / 响应处理、中间件(核心概念)

路由进阶(GET/POST 请求)

get

var 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-parser)

app.use(express.json());

express.urlencoded()

内置

解析表单(x-www-form-urlencoded)请求体

app.use(express.urlencoded({ extended: true }));

express.static()

内置

托管静态文件(CSS/JS/ 图片 / HTML)

app.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-jwtunless()用于指定 “无需校验的路径”(如登录接口);
  • 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 Token)

npm i csurf → 配合 session/cookie 实现 CSRF 校验

rate-limit

第三方

接口限流(防暴力请求 / DDOS)

npm 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-Protection);
  • rate-limitwindowMs是时间窗口(如 15 分钟),max是窗口内最大请求数(如 100 次)。
四、开发效率 / 调试中间件(开发环境专用)

提升开发效率,减少重复工作(如热重载、接口文档、错误美化)。

中间件

类型

核心作用

极简用法

nodemon

开发依赖

代码热重载(修改后自动重启服务)

npm i nodemon -D → package.json 加脚本:"dev": "nodemon app.js"

express-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可通过环境变量DEBUG=app:*控制日志输出(如DEBUG=app: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(); });

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询