Node.js 后端成长:Express 框架搭建 API 服务的 4 个关键步骤

步骤 1:项目初始化与依赖安装
  1. 创建项目目录并初始化:
    mkdir express-api && cd express-api
    npm init -y
    

  2. 安装核心依赖:
    npm install express body-parser
    

  3. 基础文件结构:
    ├── server.js       # 主入口文件
    ├── routes/         # 路由模块
    ├── middleware/     # 中间件目录
    └── package.json
    


步骤 2:构建基础 Express 服务器

server.js 中:

const express = require('express');
const app = express();
const PORT = 3000;

// 基础中间件(解析请求体)
app.use(express.json());

// 测试路由
app.get('/', (req, res) => {
  res.send('API 运行中');
});

// 启动服务器
app.listen(PORT, () => {
  console.log(`服务已启动:http://localhost:${PORT}`);
});

关键点

  • express.json() 处理 JSON 格式请求
  • 路由通过 app.METHOD() 定义(如 $ \text{GET} $, $ \text{POST} $)

步骤 3:模块化路由设计
  1. routes/userRoutes.js 中:
    const router = require('express').Router();
    
    router.get('/users', (req, res) => {
      res.json([{ id: 1, name: "张三" }]);
    });
    
    router.post('/users', (req, res) => {
      const newUser = req.body;
      // 业务逻辑处理...
      res.status(201).json(newUser);
    });
    
    module.exports = router;
    

  2. server.js 中挂载路由:
    const userRoutes = require('./routes/userRoutes');
    app.use('/api', userRoutes);  // 访问路径:/api/users
    

优势

  • 解耦业务逻辑
  • 支持路由前缀(如 /api

步骤 4:中间件封装与应用

示例:封装日志中间件
middleware/logger.js 中:

const logger = (req, res, next) => {
  const timestamp = new Date().toISOString();
  console.log(`[${timestamp}] ${req.method} ${req.url}`);
  next();  // 传递控制权
};

module.exports = logger;

在服务器中加载中间件

// server.js
const logger = require('./middleware/logger');
app.use(logger);  // 全局应用

// 路由级中间件(仅对特定路由生效)
app.use('/api', logger, userRoutes);

中间件类型

  1. 应用级中间件app.use() 全局生效
  2. 路由级中间件:绑定到特定路由
  3. 错误处理中间件:需包含四个参数 $(err, req, res, next)$

完整目录结构示例

express-api/
├── server.js
├── middleware/
│   ├── logger.js
│   └── auth.js       # 认证中间件示例
├── routes/
│   ├── userRoutes.js
│   └── productRoutes.js
└── package.json

最佳实践

  • 使用 dotenv 管理环境变量
  • 错误处理中间件放在路由后
  • 中间件执行顺序影响逻辑流(按声明顺序执行)
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐