关于 express-rest-api
面向 Node.js 开发者的 Express.js REST API 学习与构建指南,适用于 Web 或移动应用后端、微服务和 API 优先项目。内容从路由、中间件和错误处理延伸到安全、测试与部署实践。
主要功能
- 01Express 应用与路由结构示例
- 02中间件和错误处理模式
- 03RESTful 端点设计指导
- 04安全、验证与限流建议
- 05项目结构与生产检查清单
适用场景
- 01构建 Web 或移动应用后端
- 02开发微服务 API
- 03为 API 添加认证和输入验证
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pluginagentmarketplace/ custom-plugin-nodejs --skill express-rest-api安装后在 Claude Code 中输入/express-rest-api确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/config.yamlreferences/GUIDE.mdscripts/helper.py详细介绍
Express REST API 技能
掌握使用 Express.js 构建健壮、可扩展的 REST API。Express.js 是 Node.js Web 框架中事实上的标准。
快速入门
分 5 步构建基础的 Express API:
- 安装 Express -
npm install express - 创建路由 - 定义 GET、POST、PUT、DELETE 端点
- 添加中间件 - JSON 解析、CORS、安全标头
- 处理错误 - 集中式错误处理
- 测试与部署 - 使用 Postman/Insomnia,部署到云端
核心概念
1. Express 应用结构
const express = require('express');
const app = express();
// Middleware
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// Routes
app.use('/api/users', userRoutes);
app.use('/api/products', productRoutes);
// Error handling
app.use(errorHandler);
app.listen(3000, () => console.log('Server running'));
2. RESTful 路由设计
// GET /api/users - Get all users
// GET /api/users/:id - Get user by ID
// POST /api/users - Create user
// PUT /api/users/:id - Update user
// DELETE /api/users/:id - Delete user
const router = express.Router();
router.get('/', getAllUsers);
router.get('/:id', getUserById);
router.post('/', createUser);
router.put('/:id', updateUser);
router.delete('/:id', deleteUser);
module.exports = router;
3. 中间件模式
// Authentication middleware
const authenticate = (req, res, next) => {
const token = req.headers.authorization;
if (!token) return res.status(401).json({ error: 'Unauthorized' });
// Verify token...
next();
};
// Validation middleware
const validate = (schema) => (req, res, next) => {
const { error } = schema.validate(req.body);
if (error) return res.status(400).json({ error: error.message });
next();
};
// Usage
router.post('/users', authenticate, validate(userSchema), createUser);
4. 错误处理
// Custom error class
class APIError extends Error {
constructor(message, statusCode) {
super(message);
this.statusCode = statusCode;
}
}
// Global error handler
app.use((err, req, res, next) => {
const statusCode = err.statusCode || 500;
res.status(statusCode).json({
success: false,
error: err.message,
...(process.env.NODE_ENV === 'development' && { stack: err.stack })
});
});
学习路径
初级(2-3 周)
- ✅ 安装 Express 并创建基础路由
- ✅ 理解中间件概念
- ✅ 实现 CRUD 操作
- ✅ 使用 Postman 测试
中级(4-6 周)
- ✅ 实现身份验证(JWT)
- ✅ 添加输入验证
- ✅ 组织代码(MVC 模式)
- ✅ 连接数据库
高级(8-10 周)
- ✅ API 版本控制(
/api/v1/、/api/v2/) - ✅ 速率限制与安全
- ✅ 分页与筛选
- ✅ API 文档(Swagger)
- ✅ 性能优化
必备软件包
{
"dependencies": {
"express": "^4.18.0",
"helmet": "^7.0.0", // Security headers
"cors": "^2.8.5", // Cross-origin requests
"morgan": "^1.10.0", // HTTP logger
"express-validator": "^7.0.0", // Input validation
"express-rate-limit": "^6.0.0" // Rate limiting
}
}
常见模式
响应格式
// Success
{ success: true, data: {...} }
// Error
{ success: false, error: "Message" }
// Pagination
{
success: true,
data: [...],
pagination: { page: 1, limit: 10, total: 100 }
}
HTTP 状态码
200 OK- GET/PUT 请求成功201 Created- POST 请求成功204 No Content- DELETE 请求成功400 Bad Request- 验证错误401 Unauthorized- 需要身份验证403 Forbidden- 无权限404 Not Found- 未找到资源500 Internal Error- 服务器错误
项目结构
src/
├── controllers/ # Route handlers
├── routes/ # Route definitions
├── middlewares/ # Custom middleware
├── models/ # Data models
├── services/ # Business logic
├── utils/ # Helpers
└── app.js # Express setup
生产环境检查清单
- ✅ 环境变量(.env)
- ✅ 安全标头(Helmet)
- ✅ CORS 配置
- ✅ 速率限制
- ✅ 输入验证
- ✅ 错误处理
- ✅ 日志记录(Morgan/Winston)
- ✅ 测试(Jest/Supertest)
- ✅ API 文档
实际示例
完整的用户 API:
const express = require('express');
const router = express.Router();
const { body } = require('express-validator');
// GET /api/users
router.get('/', async (req, res, next) => {
try {
const { page = 1, limit = 10 } = req.query;
const users = await User.find()
.limit(limit)
.skip((page - 1) * limit);
res.json({ success: true, data: users });
} catch (error) {
next(error);
}
});
// POST /api/users
router.post('/',
body('email').isEmail(),
body('password').isLength({ min: 8 }),
async (req, res, next) => {
try {
const user = await User.create(req.body);
res.status(201).json({ success: true, data: user });
} catch (error) {
next(error);
}
}
);
module.exports = router;
适用场景
在以下情况下使用 Express REST API:
- 为 Web/移动应用构建后端
- 创建微服务
- 开发 API 优先的应用
- 需要灵活、轻量的框架
- 希望拥有庞大的生态系统和社区
相关技能
- 异步编程(处理异步操作)
- 数据库集成(连接 MongoDB/PostgreSQL)
- JWT 身份验证(保护 API)
- Jest 测试(测试端点)
- Docker 部署(将 API 容器化)
资源
评论
支持 Markdown