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-服务器

下载安装

 
   
   
 
  1. npm install -g json-server

[图片上传中...(1530598453270.png-9aa21d-1530602172408-0)]

CIL常用命令和自定义配置文件

 
   
   
 
  1. json-server [options] <source>

  2. Options:

  3.  --config, -c       Path to config file           [default: "json-server.json"]配置文件

  4.  --port, -p         Set port                                    [default: 3000]端口号

  5.  --watch, -w        Watch file(s)                                     [boolean]监听文件

  6.  --routes, -r       Path to routes file                                    自定义路由文件

  7.  --middlewares, -m  Paths to middleware files                           [array]添加中间件

  8.  --static, -s       Set static files directory                                添加静态文件

  9.  --read-only, --ro  Allow only GET requests                           [boolean]get only

  10.  --no-cors, --nc    Disable Cross-Origin Resource Sharing             [boolean]

  11.  --no-gzip, --ng    Disable GZIP Content-Encoding                     [boolean]

  12.  --snapshots, -S    Set snapshots directory                      [default: "."]

  13.  --delay, -d        Add delay to responses (ms)

  14.  --id, -i           Set database id property (e.g. _id)         [default: "id"]

  15.  --foreignKeySuffix, --fks  Set foreign key suffix, (e.g. _id as in post_id)

  16.                                                                 [default: "Id"]

  17.  --quiet, -q        Suppress log messages from output                 [boolean]

  18.  --help, -h         Show help                                         [boolean]

  19.  --version, -v      Show version number                               [boolean]

  20. Examples:

  21.  json-server db.json

  22.  json-server file.js

  23.  json-server http://example.com/db.json

可以将上面的配置参数写入默认的配置文件 json-server.json

 
   
   
 
  1. {

  2.    "host":"localhost",

  3.    "port":8080,

  4.    "watch":'db.json'

  5.    ...

  6. }

配置文件中选项的数据类型参考 json-server-h也就是上面的CIL命令

之后只要运行

 
   
   
 
  1. json-server <source> --config=json-server.json

  2. # 举例

  3. json-server db.json --config=json-server.json

db.json

在需要建立json服务器的目录下建立这个文件

1.for example

 
   
   
 
  1. {

  2.  "posts": [

  3.    { "id": 1, "title": "json-server", "author": "typicode" },

  4.    { "id": 2, "title": "hello", "author": "world" }

  5.  ],

  6.  "comments": [

  7.    { "id": 1, "body": "some comment", "postId": 1 }

  8.  ],

  9.  "profile": { "name": "typicode" }

  10. }

2.文件格式解析

其中 postscomments, profile是可以请求访问的数据类型(可以这么理解) .文档中建议在属性后面加上 s,如 posts, comments,下面会介绍这样的好处

(1)每个以 s结尾的属性都是一个对象数组,每个对象元素都用一个 id属性,可以用来标识 index,相当于主键。其余属性按自己的需要添加

(2) profile没有以 s结尾,现在还不知道什么作用,现在暂时用不到,等之后研究研究

3.启动 JSON Server

 
   
   
 
  1. json-server db.json

  2. # 添加监听 这样 在json数据发生改变的时候可以重启json server

  3. 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 之后....

打开网页是....

json-server小结

1.获取db.json中的keys

直接访问 keys就行

 
   
   
 
  1. lcoalhost:8080/posts

json-server小结

获取到了 db.json根节点下的 keyposts的所有数据

json-serverdb.json根节点的每个 key 当做一个 router 也就是我们的API 所有你存放编写测试数据时 要注意这个规则

2.过滤

 
   
   
 
  1. # 返回 title为json-server并且author为typicode的post文章

  2. GET /posts?title=json-server&author=typicode

json-server小结

 
   
   
 
  1. # 这个相当于模拟多选框,返回id在[1,2]中的post文章

  2. GET /posts?id=1&id=2

json-server小结

 
   
   
 
  1. # 使用. 进行深度过滤

  2. GET /comments?author.name=typicode

json-server小结

为什么前面需要有 posts后面加一个 s的语法规则,其中一个用法就是绑定父子关系

json-server小结

comments评论是 posts文章的子元素,在这里表示评论是属于哪篇文章的,直接用 postId关联,组合方式就是 key+ Id的形式,去掉根属性下的 s

所以GET 请求的含义就是查找typicode的评论

3.分片查询

  • _start: 起始位置 从0开始

  • _end: 结束位置 从0开始

  • _limit: 每页数量

 
   
   
 
  1. # 查找前5篇文章

  2. GET /posts?_start=0&_end=5

json-server小结

limit限制返回的数量

 
   
   
 
  1. GET /posts?_start=0&_limit=5

json-server小结

还可以和其他的查询条件一起组合

 
   
   
 
  1. GET /posts??title=hello&_start=0&_limit=5

json-server小结

4.排序

  • _sort:排序的对象

  • _order:排序的方式 ascor desc

 
   
   
 
  1. # 根据post的title 按照字母表升序排序

  2. GET /posts?_sort=title&_order=asc

 
   
   
 
  1. # 多个排序对象的方式

  2. GET /posts?_sort=user,views&_order=desc,asc

5.全文搜索

使用关键字 q来进行访问

 
   
   
 
  1. # 查找所有含有title含有 hel的文章

  2. GET /posts?q=hel

6.计算操作

Add _gte or _lte for getting a range

  • _gte:大于

  • _lte:小于

 
   
   
 
  1. GET /posts?views_gte=10&views_lte=20

Add _ne to exclude a value

  • _ne:排除

 
   
   
 
  1. GET /posts?id_ne=1

Add _like to filter (RegExp supported)

  • _like:模糊查询,支持正则表达式

 
   
   
 
  1. GET /posts?title_like=server

References

官方文档

简书--使用json-server模拟服务器API

CSDN--json-server深入探秘


以上是关于json-server小结的主要内容,如果未能解决你的问题,请参考以下文章

vue小记

无法在 JSON-SERVER 中执行 CRUD

axios + json-server用法演示

Heroku 错误模块未找到 'json-server'

如何在json-server上添加标头?

如何在 json-server 请求中找到 request.headers?