mock学习(2)-数据模拟-Mockjs 和 json-server
数据模拟-Mockjs
和json-server
mock
和json-server
都是一种模拟数据的手段,当今时代,前后端分离开发模式已经是web
开发的是主流了,我们不可能等后端的接口开发完毕了,在进行前端的页面的接口测试,因此前端开发工程师们就想出了一种能够模拟数据
并且截获对应接口的网络请求
,返回我们模拟的数据
的方法,其中最为常见的就是:mockjs
,josn-server
以及apiFox
了,鉴于我们之前已经使用(学习)过mockjs
的基本使用,那么这篇博客就直入主题了,重点讲解mock
和json-server
的基本使用
json-server
- 官方文档
json-server
是一个在前端本地运行,可以存储json
数据的server
。通俗来说,就是模拟服务端接口数据,一般用在前后端分离后,前端人员可以不依赖API
开发,而在本地搭建一个JSON
服务,自己产生测试数据。相当于一个服务器与数据库的简易结合体。
使用步骤:
- 下载:
npm install -g json-server |
- 启动
json-server
json-server --watch db.json |
- 随后项目文件夹中会自动生成
db.json
(相当于低配版的数据库)文件夹,里面就有我们初始化的模拟数据,我们可以对这些数据进行增删改查
/* -------- db.json ----------- */ |
- 修改端口号(修改为5000)
json-server --watch db.json --port 5000 |
- 我们也可以通过创建
package.json
文件来创建指令脚本和管理包版本
npm init |
- 在我们创建好
db.json
后,这个db.json
就相当于我们临时的数据库,我们可以通过发送网络请求来对里面的数据进行增删改查
(注意:json-server
中内置一个字段,也就是生成的db.json
中所有的数据内置一个id
字段,用于指向这条数据,我们不能占用它)
代码展示:(增删改查)
操作顺序为:
- 发送
get
请求获取db.json
中figures
中的书有数据信息 - 发送
post
请求给db.json
中的figures
中新增{name:诸葛亮,职位:军师}
的数据,id是自增的 - 发送
get
请求查找db.json
中figures
中的id=3且name=关羽
的数据 - 发送
put(覆盖修改)
请求将db.json
中figures
中的id=4
的数据,将name改为孔明
,职位改为军师
- 发送
patch(按需修改)
请求将db.json
中figures
中的id=4(孔明)
的数据,将职位改为监军
- 发送
delete
请求删除db.json
中的figures
中id=4
的数据(删除孔明
)
- 发送
db.json
(相当于数据库)
{ |
index.html
(前端页面)
|
- 结果展示:
同时json-server
还支持类似数据库的语句操作和静态资源部署
数据库的语句操作:(
get请求
)模糊搜索
: 我们可以在url
上拼接上q
字段来进行模糊搜索 =>http://localhost:3000/figures?q=1
, 表示搜索db.json
中figures
中 任意属性带1
的所有数据分页搜索
: 分页采用_page
来设置页码,_limit
来控制每页显示条数。如果没有指定_limit
,默认每页显示10
条 =>http://localhost:300figures?_page=1&_limit=2
, 表示搜索db.json
中figures
中 第一页的前两条数据排序
: 排序采用_sort
来指定要排序的字段,_order
来指定排序是正排序还是逆排序(asc | desc ,默认是asc
)=>http://localhost:3000/figures?_sort=id&_order=desc
, 表示根据id
的倒序排序获取所有数据取局部数据
:Slice
采用__start
来指定开始位置,__end
来指定结束位置, 或者是用_limit
来指定从开始位置起往后取几个数据 =>http://localhost:3000/figures?_start=0&_end=2
, 表示由0开始,获取到2的数据更加细致的过滤条件
:- 采用
_gte _lte
来设置一个取值范围 =>http://localhost:3000/figures?id_gte=5&id_lte=9
,表示获取figures
中,id
由5
到9
的数据 - 采用
_ne
来设置不包含某个值 =>http://localhost:3000/figures?id_ne=1&id_ne=2&id_ne=3
, 表示获取figures
不包含id为1,2,3
的数据 - 采用
_like
来设置匹配某个字符串 =>http://localhost:3000/figures?id_like=9
, 表示匹配figures
中id属性为9
的数据
- 采用
- 等等……..
静态资源部署
- 在项目的根目录中创建
json_sever_config.json
文件
{
"port": 3000, // 端口号
"watch": true, // 开启可被监听
"static": "./public", // 部署的静态资源目录
"read-only": false, // 关闭只读模式
"no-cors": true, // 允许跨域请求
"no-gzip": false // 关闭gzip
}- 重新启动项目(加上我们刚刚配置的
json_sever_config.json
文件)
json-server --watch db.json json_server_config.json
- 结果展示:
- 在项目的根目录中创建
Mockjs
在往期的博客我已经介绍过
mock
的基本使用了,那么在这篇博客中我们就再一次讲解一下吧!使用
mock
我们可以拦截对应的ajax
接口请求,然后返回我们自己模拟的数据,这些数据可以是我们自己设置好的,也可以是使用mock
模拟出来的
使用步骤:
- 安装
mock
npm i mockjs |
- 使用
mock
模拟数据
/* --------- 使用mock模拟数据 ----------- */ |
- 使用
mock
返回自己设置的数据(本地数据)
/* --------- 使用mock拦截请求,返回我们自己的数据 ----------- */ |
app.js
中运行服务器(express
)
const express = require('express') |
结果展示:
返回
mock
模拟数据返回我们自己设置的数据(本地数据)
接口拦截功能:
- 还是同一个项目,这次我们建立一个前端页面用于发送网络请求,同时在该前端页面中以
cdn
的方式引入Mock
并设置一个按钮,点击发送网路请求去请求上面我们自己写的mock
数据(ourData
)
|
- 结果展示:
Mock
在vue
项目中实现请求接口拦截返回模拟数据
实现步骤:
- 模拟数据:与上面的一致(
ourData,mockData
) - 创建
mock
拦截器(在项目根目录下创建Mock
文件夹里面创建index.js
)
// mock设置:拦截请求,返回我模拟的数据 |
- 在
Vue
项目中的main.js
中引入全局Mock拦截器
/* ------------------- Vue项目中的main.js ---------------------- */ |
- 这样以后我们在整个项目中只要发送
get
网络请求的url
与mock拦截器
中的一致,那么这个请求都会被拦截到然后返回mock设置好的数据
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议。转载请注明来自 肥林の仓库