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.json
json-server http://jsonplaceholder.typicode.com/db
3 如何mock
如何mock,把json改成js,这样就可使用 faker 了
// index.js
module.exports = () => {
const data = { users: [] }
// Create 1000 users
for (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