1 安装使用
安装:
npm i json-server -g
准备 db.json :
{"plans": [{ "id": 1, "title": "go to bed", "author": "xinbao" }],"comments": [{ "id": 1, "body": "some comment", "postId": 1 }],"profile": { "name": "xinbao" }}
启动(自带解决跨域CORS,也支持jsonp):
json-server --watch db.json --port 5001
剩下的就简单了,默认的restful 最佳实践的约定:
| 作用 | method | url | param | data |
|---|---|---|---|---|
| 获取计划列表 | get | /plans | ?pageSize=1&pageNu10 | |
| 获取计划 | get | /plans/{id} | 无 | |
| 新增计划 | post | /plans | {} | |
| 修改计划 | put | /plans/{id} | {} | |
| 删除计划 | delete | /plans/{id} |
额外补充参数:
- 筛选:
?title=xxx&author=xxx字段筛选?id=1&id=2读取多个结果?authhor.name=xxx带嵌套
- 分页:
?_page=7&_limit=10分页?_sort=key&_order=asc排序
- 搜索:
?q=xx模糊搜索
- 联合类型,多表查询
/posts?_embed=comments包含内部资源/comments/1?_expand=post包含父级资源
- 其他的选择符号
[key]_lte大于等于
也支持载入远程 json,数据可复用:
json-server http://example.com/file.jsonjson-server http://jsonplaceholder.typicode.com/db
3 如何mock
如何mock,把json改成js,这样就可使用 faker 了
// index.jsmodule.exports = () => {const data = { users: [] }// Create 1000 usersfor (let i = 0; i < 1000; i++) {data.users.push({ id: i, name: `user${i}` })}return data}
4 设定 base
新建 routes.json ,给连接增加 baseURL
{"/api/*": "/$1","/:resource/:id/show": "/:resource/:id","/posts/:category": "/posts?category=:category","/articles\\?id=:id": "/posts/:id"}
启动
json-server db.json --routes routes.json
5 技术实现
实时修改db,用的是 lowdb
