json server默认提供了一系列的查询参数,非常灵活。
数据源
数据源还是db.json
,内容如下:
{
"posts": [
{ "id": 1, "title": "json server入门", "author": "乙醇" }
],
"comments": [
{ "id": 1, "body": "some comment", "postId": 1 }
],
"profile": { "name": "typicode" }
}
运行mock server
在命令行中运行
json-server --watch db.json
过滤器
指定过滤字段,使用.
来访问具体属性
GET /posts?title=json-server&author=typicode
GET /posts?id=1&id=2
GET /comments?author.name=typicode
分页
分页也是常用功能,使用_page
指定第几页,_limit
指定返回的数据条数。
在Link header 我们可以拿到first, prev, next 和 last
链接的相关信息。
默认1页返回10条数据。
GET /posts?_page=7
GET /posts?_page=7&_limit=20
排序
_sort
表示排序字段,_order
表示具体的排序方式,默认是升序。
GET /posts?_sort=views&_order=asc
GET /posts/1/comments?_sort=votes&_order=asc
也支持多字段排序
GET /posts?_sort=user,views&_order=desc,asc
切片
- _start指定纪录起始点,包含起点
- _end指定终点,不包含终点
- _limit指定返回的数量
- X-Total-Count中会返回所有的纪录数
GET /posts?_start=20&_end=30
GET /posts/1/comments?_start=20&_end=30
GET /posts/1/comments?_start=20&_limit=10
操作
- _gte: 大于
- _lte: 小于
- _ne: 不等于
- _like: 有点像sql的like,支持正则表达式
GET /posts?views_gte=10&views_lte=20
GET /posts?id_ne=1
GET /posts?title_like=server
全文搜索
使用q
参数,比如
GET /posts?q=internet
关联
- _embed: 包含子资源
- _expand: 包含父资源
GET /posts?_embed=comments
GET /posts/1?_embed=comments
GET /comments?_expand=post
GET /comments/1?_expand=post
特别的,创建的时候也可以进行关联
POST /posts/1/comments
查看db
GET /db