Mock随机数据生成,Ajax请求拦截
MockJS简介
MockJS是一款适用于前后端分离的,主要负责进行axios请求拦截与随机数据生成的JS库
MockJS定义了丰富的数据类型生成,详见MockJS
Mock安装
安装在生产环境
Mock与React的结合
通常在src目录下创建一个mock
文件夹对负责生成数据的文件进行统一管理,上传代码时忽略mock文件夹
首先创建一个index.js
作为入口文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
import Mock from "mockjs";
import blogListMock from "./blogData.js";
const mocks = [...blogListMock];
for (const i of mocks) { Mock.mock(i.url, i.type, i.response); }
|
随后我们可以再根据业务,分别创建这些业务的接口文件,并定义需要生成的数据形状
例如我们现在有如下需求:
- 请求接口得到所有博客数据数组
- 每条博客数据包含:
- id
- 作者author
- name
- avatar
- 内容content
- 发布时间date
与博客相关的业务暂时只有这一个接口,那么我们可以创建一个博客相关接口的文件blogData.js
,然后开始编写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| import Mock from "mockjs";
const Random = Mock.Random;
const blogListMock = [ { url: "/api/getBlogList", type: "get", response: (config) => { console.log("BlogData Mock config: ", config); return Mock.mock({ message: "success", code: 200, "data|10": [ { "id|+1": 1, author: { name: Random.name(), avatar: Random.image(), }, content: Random.paragraph(15, 20), publishDate: Random.date("yyyy-MM-dd"), }, ], }); }, }, ];
export default blogListMock;
|
随后在具体的逻辑页面中,我们就可以直接是用axios请求设定好的URL,以此来获得生成好的数据:
1 2 3 4 5
| axios.get("/api/getBlogList").then((res) => { setBlogList(res.data.data); }).catch((error) => { console.log(error); });
|
如果是是用Vite进行构建,还可以设置开发环境变量:
1 2 3
| // .env.development NODE_ENV = development REACT_APP_MOCK = true
|