json-server服务详解

2021-01-29 12:17

阅读:875

第1章 json-server服务

JSON-Server 是一个 Node 模块,运行 Express 服务器,你可以指定一个 json 文件作为 api 的数据源。

1.1 json-server的安装

命令:npm install --g json-server
 
  • 1

1.2 json-server服务的启动

json-server可以直接把一个json文件托管成一个具备全RESTful风格的API,并支持跨域、jsonp、路由订制、数据快照保存等功能的 web 服务器
db.json文件的内容格式如下:
技术图片
通过启动json-server服务并侦听db.json,就可以将db.json文件托管成一个 web 服务,此时db.json就充当了数据库服务器的作用。

命令:json-server --port 53000 --watch db.json(不指定端口时默认端口是3000)
 
  • 1

如下图所示, 则证明json-server服务启动成功
技术图片
此时,你可以打开你的浏览器,然后输入:http://localhost:3000/students
技术图片
技术图片

1.3 json-server 启动参数表

  • 语法:json-server [options]
  • source可以是json文件或者js文件
  • [options]参数列表:
参数 简写 默认值 说明
--config -c 指定配置文件 [默认值: "json-server.json"]
--port -p 设置端口[默认值为3000] Number
--host -H 设置域[默认值为"0.0.0.0"] String
--watch -w Watch file(s) 是否监听
--routes -r 指定自定义路由  
--middlewares -m 指定中间件 files [数组]
--static -s Set static files directory 静态目录,类比:express的静态目录
--readonly --ro Allow only GET requests [布尔]
--nocors --nc Disable Cross-Origin Resource Sharing [布尔]  
--no gzip gzip --ng Disable GZIP Content-Encoding [布尔]  
--id -i Set database id property (e.g. _id) [默认值: "id"]
--delay -d Add delay to responses (ms)  
--snapshots -S Set snapshots directory [默认值: "."]  
--foreignKeySuffix -- fks Set foreign key suffix (e.g. _id as in post_id) [默认值: "Id"]
--help -h 显示帮助信息 [布尔]
--version -v 显示版本号 [布尔]
几种启动json-server的方式
命令1:json-server db.json
命令2:json-server --watch app.js
命令3:json-server --watch -c ./jsonserver.json
命令4:json-server --port 8888 --watch db.json(不指定端口时默认端口是3000)
 
  • 1
  • 2
  • 3
  • 4

1.4 通过app.js动态生成模拟数据

把app.js文件返回的数据托管成web服务。
使用app.js配合mockjs库可以很方便的进行生成模拟数据。

// 用mockjs模拟生成数据
const Mock = require(‘mockjs‘);

module.exports = () => {
  // 使用 Mock
  var data = Mock.mock({
    ‘students|10‘: [
      {
        // 属性 id 是一个自增数,起始值为 1,每次增 1
        "id|+1": 10,
        "name|1": ["小明","小花","小龙","小林","小雨","小虎","小艾","小梦","小凡","小云"],
        "class|1": ["三年一班","三年二班"],
        "school":"高新一中",
        "category_Id": 995
      }
    ]});
  // 返回的data会作为json-server的数据
  return data;
};
 

 

 

1.5 使用默认路由

默认的路由

json-server为提供了GET,POST, PUT, PATCH ,DELETE等请求的API,分别对应数据中的所有类型的实体。

# 获取所有的学生信息
GET /students

# 获取id=1001的学生信息
GET /students/1001

# 添加学生信息,请求body中必须包含学生的属性数据,json-server自动保存。
POST  
/students

# 修改学生信息,请求body中必须包含学生的属性数据
PUT    /students/1

# 删除学生信息
DELETE /students/1

# 获取具体学生信息id=1001
GET  /students/1001

# 模糊查询学生信息
GET  /students/name_like=‘小‘ // _like--模糊查询的关键字

# 过滤查询学生信息
GET /students?id=json-server&name=‘小花‘
GET /students?id=1&id=2

# 查询学生信息,使用关系表达式进行过滤
GET /students?id_ne=1001  // _ne--不等于
GET /students?id_lte=1001 // _lte--小于等于
GET /students?id_lte=1001 // _gte--大于等于 

# 查询学生信息,分页查询
GET /students?_page=5 // 查询第5页的学生信息
GET /students?_page=5&_limit=20  // 查询第5页的学生信息并设置每页显示信息条数为20条

# 查询学生信息,并以某个字段进行排序,同时可指定升序还是降序排列
GET /students?_sort=name&_order=asc   // 按照姓名升序排列  _sort--排序关键字,_order--升降序关键字
GET /students/?_sort=id&_order=desc  // 按照学号降序排列
GET /students?_sort=name,id&_order=desc,asc // 同时排序多个字段

# 查询学生信息,从任意位置开始查询已知数据中的部分数据
GET /students?_start=20&_end=30  // 从第20条开始查询10条数据
GET /students?_start=20&_limit=10 // 从第20条开始查询,每页显示10条数据

# 全文检索
GET /students?q=internet // 通过q参数进行全文检索
 

 

 

1.6 使用自定义路由

配置自定义路由的命令

命令:json-server --watch --routes route.json db.json
 
  • 1

路由配置文件的内容格式如下:

{
  "/api/*": "/$1",    //   /api/students=>  /students
  "/:students/:id/show": "/:students/:id",
  "/posts/:id": "/posts?id=:id",
  "/students\\?id=:id": "/posts/:id"
}
 

 

 

1.6 自定义配置文件

启动json-server时, 如果自定义配置的参数和文件过多,容易出现命令敲错的现象。json-server允许我们把所有的配置放到一个配置文件中,这个配置文件默认json-server.json;
配置文件的主要内容如下:

{
  "port": 8888,  // 自定义服务监听端口
  "watch": true, // 服务监听
  "static": "./public", //静态文件目录
  "read-only": false,  // 是否只允许get请求
  "no-cors": false, // 是否允许跨域访问
  "no-gzip": false, // 是否可压缩
  "routes": "route.json" // 自定义路由
}
 

 

 

使用配置文件启动json-server命令
json-server --watch -c jserver.json db.json
 
  • 1


评论


亲,登录后才可以留言!