json-server小结
Posted 我的孙女叫小芳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json-server小结相关的知识,希望对你有一定的参考价值。
json-server
Get a full fake REST API with zero coding in less than 30 seconds (seriously)
我对它的定位就是一个快速搭建本地JSON服务器,用于测试的工具,简单的说,可以不用一行路由代码创建一个json-服务器
下载安装
npm install -g json-server
[图片上传中...(1530598453270.png-9aa21d-1530602172408-0)]
CIL常用命令和自定义配置文件
json-server [options] <source>
Options:
--config, -c Path to config file [default: "json-server.json"]配置文件
--port, -p Set port [default: 3000]端口号
--watch, -w Watch file(s) [boolean]监听文件
--routes, -r Path to routes file 自定义路由文件
--middlewares, -m Paths to middleware files [array]添加中间件
--static, -s Set static files directory 添加静态文件
--read-only, --ro Allow only GET requests [boolean]get only
--no-cors, --nc Disable Cross-Origin Resource Sharing [boolean]
--no-gzip, --ng Disable GZIP Content-Encoding [boolean]
--snapshots, -S Set snapshots directory [default: "."]
--delay, -d Add delay to responses (ms)
--id, -i Set database id property (e.g. _id) [default: "id"]
--foreignKeySuffix, --fks Set foreign key suffix, (e.g. _id as in post_id)
[default: "Id"]
--quiet, -q Suppress log messages from output [boolean]
--help, -h Show help [boolean]
--version, -v Show version number [boolean]
Examples:
json-server db.json
json-server file.js
json-server http://example.com/db.json
可以将上面的配置参数写入默认的配置文件 json-server.json
{
"host":"localhost",
"port":8080,
"watch":'db.json'
...
}
配置文件中选项的数据类型参考 json-server-h
也就是上面的CIL命令
之后只要运行
json-server <source> --config=json-server.json
# 举例
json-server db.json --config=json-server.json
db.json
在需要建立json服务器的目录下建立这个文件
1.for example
{
"posts": [
{ "id": 1, "title": "json-server", "author": "typicode" },
{ "id": 2, "title": "hello", "author": "world" }
],
"comments": [
{ "id": 1, "body": "some comment", "postId": 1 }
],
"profile": { "name": "typicode" }
}
2.文件格式解析
其中 posts
, comments
, profile
是可以请求访问的数据类型(可以这么理解) .文档中建议在属性后面加上 s
,如 posts
, comments
,下面会介绍这样的好处
(1)每个以 s
结尾的属性都是一个对象数组,每个对象元素都用一个 id
属性,可以用来标识 index
,相当于主键。其余属性按自己的需要添加
(2) profile
没有以 s
结尾,现在还不知道什么作用,现在暂时用不到,等之后研究研究
3.启动 JSON Server
json-server db.json
# 添加监听 这样 在json数据发生改变的时候可以重启json server
json-server --watch db.json
4.注意
POST,PUT或PATCH请求应包含
Content-Type:application/json
在请求正文中使用JSON 的标头。否则它将导致200 OK但不对数据进行更改如果想要用 POST, PUT, PATCH or DELETE 请求, 并且安全自动的将更改写入
db.json
使用 lowdb.
默认路由的语法规则
启动 json server 之后....
打开网页是....
1.获取db.json中的keys
直接访问 keys
就行
lcoalhost:8080/posts
获取到了 db.json
根节点下的 key
为 posts
的所有数据
json-server
把db.json
根节点的每个key
当做一个router
也就是我们的API 所有你存放编写测试数据时 要注意这个规则
2.过滤
# 返回 title为json-server并且author为typicode的post文章
GET /posts?title=json-server&author=typicode
# 这个相当于模拟多选框,返回id在[1,2]中的post文章
GET /posts?id=1&id=2
# 使用. 进行深度过滤
GET /comments?author.name=typicode
为什么前面需要有 posts
后面加一个 s
的语法规则,其中一个用法就是绑定父子关系
comments
评论是 posts
文章的子元素,在这里表示评论是属于哪篇文章的,直接用 postId
关联,组合方式就是 key
+ Id
的形式,去掉根属性下的 s
。
所以GET 请求的含义就是查找typicode的评论
3.分片查询
_start
: 起始位置 从0开始_end
: 结束位置 从0开始_limit
: 每页数量
# 查找前5篇文章
GET /posts?_start=0&_end=5
用 limit
限制返回的数量
GET /posts?_start=0&_limit=5
还可以和其他的查询条件一起组合
GET /posts??title=hello&_start=0&_limit=5
4.排序
_sort
:排序的对象_order
:排序的方式asc
ordesc
# 根据post的title 按照字母表升序排序
GET /posts?_sort=title&_order=asc
# 多个排序对象的方式
GET /posts?_sort=user,views&_order=desc,asc
5.全文搜索
使用关键字 q
来进行访问
# 查找所有含有title含有 hel的文章
GET /posts?q=hel
6.计算操作
Add _gte
or _lte
for getting a range
_gte
:大于_lte
:小于
GET /posts?views_gte=10&views_lte=20
Add _ne
to exclude a value
_ne
:排除
GET /posts?id_ne=1
Add _like
to filter (RegExp supported)
_like
:模糊查询,支持正则表达式
GET /posts?title_like=server
References
官方文档
简书--使用json-server模拟服务器API
CSDN--json-server深入探秘
以上是关于json-server小结的主要内容,如果未能解决你的问题,请参考以下文章