1-4 CLI轻量mockserver:json-server
为什么需要 Mock 服务器
Mock.js 的前端拦截方案有局限性:无法模拟真实的网络延迟、超时、连接异常等场景。当需要发送真实 HTTP 请求来测试页面在网络不佳时的表现时,必须有一个真实的 Mock 服务端。
json-server 简介
json-server 是基于 Express 的 Node.js CLI 工具,可以快速创建假 REST API。它不仅能生成 Mock 数据,还能实现真正的增删改查操作。
核心特性:
| 特性 | 说明 |
|---|---|
| 零编码 | 准备一个 JSON 文件即可启动 |
| 完整 CRUD | 支持 GET、POST、PUT、DELETE |
| 查询功能 | 排序、分页、切片、操作符、模糊查询 |
| 关联查询 | 支持数据之间的关系 |
| 静态资源 | 内置静态文件服务器 |
| 中间件 | 支持 Express 生态的所有中间件 |
快速开始
安装
npm install -g json-server
bash
创建数据文件
// db.json
{
"posts": [
{ "id": 1, "title": "第一篇文章", "author": "张三" },
{ "id": 2, "title": "第二篇文章", "author": "李四" }
],
"comments": [
{ "id": 1, "body": "好文章!", "postId": 1 }
],
"profile": { "name": "示例用户" }
}
json
启动服务
json-server db.json
bash
启动后自动生成以下 REST API:
GET /posts ← 获取所有文章
GET /posts/1 ← 获取单篇文章
POST /posts ← 新增文章
PUT /posts/1 ← 更新文章
DELETE /posts/1 ← 删除文章
GET /comments ← 评论接口
GET /profile ← 单条数据接口
text
查询功能
# 排序
GET /posts?_sort=views&_order=desc
# 分页
GET /posts?_page=1&_limit=10
# 切片
GET /posts?_start=0&_end=5
# 条件查询
GET /posts?author=张三
# 操作符(大于、小于)
GET /posts?views_gte=100
# 模糊查询
GET /posts?title_like=文章
bash
底层技术
json-server 使用 lowdb(基于 JSON 文件的本地数据库)作为数据存储,所有数据都保存在 .json 文件中。
适用场景与限制
| 适用场景 | 不适用场景 |
|---|---|
| 前端开发和测试 | 生产环境 |
| 示例站点和 Demo | 需要高并发的场景 |
| 教学环境 | 需要数据安全的场景 |
| 接口原型验证 | 需要分布式事务的场景 |
限制原因:
- 数据存储在 JSON 文件中,性能有限
- 不支持数据库级别的分布式特性
- 安全性和稳定性不足以支撑生产负载
- 无事务支持
参考资源
- json-server GitHub - 官方文档
- lowdb GitHub - 底层数据库
↑