在我们前端的开发工作中,如果与后端做好了前后端并行开发的安排,那么我们肯定是少不了使用 Mock 工具的。作为前端同学对于网上流行的各种 Mock 工具应该都有一些了解,但是这些工具要么太过于强大,使用它还得学习一下它是怎么玩儿的,比如著名的 mockjs
工具。要么过于简陋,比如网上各种5分钟开发一个 mock 服务的教程。
针对这样的情况,我个人开发了一款超简单的 RestFUL API 接口 Mock 工具。今天讲解的是初代版本,该版本拥有完整的 RestFUL API 接口模拟功能,使用极其简单。我将其命名为 simple-mock
。
当然,因为功能太简单,太易用,因此不能满足一些复杂场景。针对这样的情况,我会尽快开发一个功能更强大的版本,并且会保持易用的特性。但是,我当前发布的
v0.0.1
版本已经可以胜任大多数常见使用场景,因此,来讲解这个的使用还是有一定的意义的。如果不满足你的需求,可以稍微等两天。。。
我们在 https://github.com/fengcms/simple-mock/releases 下载 v0.0.1
的 releases
版本。
在命令行中进入项目文件夹后执行如下命令:
# 安装依赖
npm i
# 运行项目
npm start
运行后,如下图所示,可以看到我们的 mock
服务已经在 3000
端口上跑起来了。
在项目根目录中,我们打开 config.js
文件,这个就是我们的配置文件。
module.exports = {
prefix: '/api/v1/',
port: 3000,
host: '0.0.0.0'
}
prefix
是接口前缀的配置,根据你的实际情况进行调整。
port
是 mock
服务运行的默认端口,如果你的端口被占用了,可以调整一下。
host
是运行IP,默认是 0.0.0.0
。这个配置是局域网内可以访问的,你只要知道你的IP地址是多少就可以了。如果只允许本地访问,可以修改为 127.0.0.1
即可。
在项目中,我 api
目录放了三个接口演示文件:
这三个文件分别演示了 mock
分别支持 js
、json
两种类型的接口模拟文件,并且 js
文件是支持动态计算数据的。
下面以 book
这个接口为例:
GET http://0.0.0.0:3000/api/v1/book
POST http://0.0.0.0:3000/api/v1/book
GET http://0.0.0.0:3000/api/v1/book/1
DELETE http://0.0.0.0:3000/api/v1/book/1
PUT http://0.0.0.0:3000/api/v1/book/1
如上图多图所示,一个接口模拟文件,可以完整的支持 RestFUL
风格的所有模拟数据。
我们还是以 book
接口为例,来看一下我们的接口模拟文件是怎么撰写的:
module.exports = {
list: {
get: {
status: 0,
data: {
list: [
{
id: 1,
name: 'The three-body problem'
}, {
id: 2,
name: 'Interstellar'
}
]
}
},
post: {
status: 0,
msg: 'add success'
}
},
item: {
get: {
status: 0,
data: {
id: 1,
name: 'The three-body problem'
}
},
put: {
status: 0,
msg: 'edit success'
},
delete: {
status: 0,
msg: 'delete success'
}
}
}
如上,我们可以按到,模拟文件导出了一个对象,其中 list
节点是服务于 /api/v1/book
接口,而 item
节点服务于 /api/v1/book/:id
这样的接口。
而这其中的子节点就是各个支持的方法名的小写,再其中的,就是我们的模拟数据了。
因为这是 js
文件,所以它也是支持动态方法的。我们来看一下 love.js
文件源码:
function makeList () {
let o = []
for (let i = 0; i < 10; i++) {
o.push({
id: i,
name: 'fungleo',
old: 30
})
}
return o
}
module.exports = {
list: {
get: {
status: 0,
data: {
list: makeList()
}
},
post: {
status: 0,
msg: '添加成功'
}
},
item: {
get: {
status: 0,
data: {
name: 'fungleo',
old: 30
}
},
put: {
status: 0,
msg: '修改成功'
},
delete: {
status: 0,
msg: '删除成功'
}
}
}
相信各位一看就一目了然了。
好,到此,该 mock
服务的主要内容就讲解完成了。如果你需要添加某个接口,只需要在 api
目录新建一个接口名的 js
文件,然后自己去编写该接口的 mock
数据即可了。
当然,有部分朋友可能会有这个疑问。比如,在很多公司,都只采用 post
方法,而弃用其他的接口请求方法的。其实,这是很简单的。举个例子,比如你要模拟一个 getBook
的接口,可以搞:
getBook.js
的文件。const data = {
// 你要模拟的数据放在这里
}
module.exports = {
list: {
post: data
},
}
这样就好啦!是不是巨简单呢?
当前发布的这个版本,可以满足绝大多数的使用场景了,但是还是有很多场景是无法模拟的。为了更真实的模拟数据,下一版本我会增加如下功能:
header
或者 cookies
是否包含指定字段来判断是否登录。本项目 github 地址: https://github.com/fengcms/simple-mock ,喜欢的话,去给我点个赞,关注一下吧!
本文允许转载,转载需注明文章首发地址,并不得去除我正文中的 github 地址,谢谢!