json-server:高效构建模拟 RESTful API 的完整指南
json-server 是基于 Node.js 的轻量级工具,可在 30 秒内创建功能完备的 RESTful API,极大提升前端开发和测试效率。以下是优化后的核心功能详解、进阶配置及最佳实践。
一、核心功能与优势
-
零代码快速搭建
只需一个 JSON 文件即可支持完整 CRUD 操作(GET/POST/PUT/PATCH/DELETE)。
示例数据文件db.json:{ "users": [ {"id": 1, "name": "张三", "age": 25}, {"id": 2, "name": "李四", "age": 30} ], "posts": [ {"id": 1, "title": "第一篇文章", "author": "张三", "userId": 1} ] }- 自动生成路由:
/users,/posts,/posts/1
- 自动生成路由:
-
实时数据监听
通过--watch选项监控文件变更,实时同步 API 数据:json-server --watch db.json -
高级查询能力
- 过滤:
GET /users?age=25 - 排序:
GET /users?_sort=name&_order=asc - 分页:
GET /users?_page=2&_limit=5 - 全文检索:
GET /users?q=张 - 范围查询:
GET /users?age_gte=20&age_lte=30
- 过滤:
-
关系型数据模拟
- 嵌套资源:
GET /posts/1/comments - 关联扩展:
GET /users?_embed=posts # 用户及其文章 GET /posts/1?_expand=user # 文章及关联用户
- 嵌套资源:
二、进阶配置
-
自定义路由 (
routes.json){ "/api/*": "/$1", // 重写路径 "/blog/posts/:id": "/posts/:id", // 别名路由 "/search/:keyword": "/posts?q=:keyword" // 参数映射 }启动命令:
json-server --routes routes.json db.json -
中间件扩展 (
middleware.js)module.exports = (req, res, next) => { // 添加请求时间戳 if (req.method === 'POST' || req.method === 'PUT') { req.body.updatedAt = new Date().toISOString(); } // 模拟延迟(2秒) setTimeout(next, 2000); };启动命令:
json-server --middlewares middleware.js db.json -
环境配置文件 (
json-server.json){ "port": 8080, "watch": true, "static": "./public", // 托管静态资源 "delay": 1500, // 全局响应延迟 "routes": "routes.json" }
三、安装与最佳实践
安装步骤:
npm install -g json-server # 全局安装
mkdir mock-api && cd mock-api
touch db.json routes.json # 初始化文件
json-server --watch db.json --port 3000
调试技巧:
- 使用 Postman 或 curl 测试端点:
curl -X POST http://localhost:3000/users -d '{"name":"王五", "age":28}' -H "Content-Type: application/json" - 启用日志:
json-server --watch db.json --logger
四、应用场景扩展
-
前端联调
- 模拟登录认证:中间件添加 JWT 验证逻辑
- 表单验证:拦截非法 POST 请求并返回错误码
400
-
自动化测试
- Jest 集成:启动服务后运行端到端测试
- Cypress 模拟:预填充测试数据:
cy.request('POST', '/users', {name: '测试用户'})
-
微服务原型
通过多文件拆分模块:json-server --watch user.json --port 3001 & json-server --watch product.json --port 3002
五、注意事项
-
数据持久化
- 定期备份
db.json(服务重启后内存数据丢失) - 使用
lowdb适配数据库存储
- 定期备份
-
安全强化
- 开发环境专用,生产环境需添加:
- 身份验证中间件
- CORS 限制
- 请求速率控制
- 开发环境专用,生产环境需添加:
-
性能优化
- 大数据集启用分页(
_page和_limit) - 避免嵌套查询深度超过 3 层
- 大数据集启用分页(
通过灵活配置,json-server 可覆盖 90% 的 API 模拟场景,显著加速前后端分离开发流程。完整文档参考:json-server GitHub。