json-server 实现简单接口mock
json-server 实现简单接口mock
工具介绍
Json-server 是一个非常方便的mockserver工具,通俗来说,就是模拟服务端接口数据
开发人员可以不依赖API开发,而在本地搭建一个JSON服务,自己产生测试数据
解决问题
在开发时,若依赖另一方的接口,可以使用mock工具模拟一个服务端的api接口,不依赖API接口的实现,继续开发本模块的功能
优点
1、本地部署
不同于主流的mockserver,json-server不使用外部服务器,不会泄露数据到外部环境
PS:postman集成更强大的mockserver能力,但需要登录外部的个人账号,有泄露公司开发信息的风险,IT部门已禁止使用
2、体积小
json-server容量很小,npm全局安装,仅依赖node.js 环境
3、自带数据库
json-server内置了数据存储结构,可以解析json数据作为数据库的内容,可以实现简单的CRUD
安装
使用npm全局安装json-server:
npm install -g json-server
可以通过查看版本号,来测试是否安装成功:
json-server -v
工具使用
服务器部署
1、创建json-server的数据库目录
- 在项目或者自定义目录新建文件夹,在文件夹目录下,执行启动命令
- 默认端口为3000,可修改
json-server --host "本地IP" db.json
结果如下:
- 命令扩展参数:
json-server [options] <source>
数 | 简写 | 默认值 | 说明 |
---|---|---|---|
–config | -c | 指定配置文件 | [默认值: “json-server.json”] |
–port | -p | 设置端口 [默认值: 3000] | Number |
–host | -H | 设置域 [默认值: “0.0.0.0”] | String |
–watch | -w | Watch file(s) | 是否监听 |
–routes | -r | 指定自定义路由 | |
–readonly | –ro | Allow only GET requests | [布尔] |
–delay | -d | Add delay to responses | (ms) |
–version | -v | 显示版本号 | [布尔] |
–help | -h | 显示帮助信息 | [布尔] |
接口和数据自定义
启动server服务器后,若目录下没有对应的json文件,会按照模板创建json
xxx.json 包含了数据库的所有对象信息
数据库模板文件的参数:
- 每个json的Key是一个URL路径,json-server这里认为的含义是查询对象表示
- 这里作为示范,修改db.json中url和响应
这里表示,server在端口3000,存在接口 /queryDevice,会返回所有对象
request: /queryDevice
response:
[
{
"resID": 100,
"deviceName": "json-server",
"meType": "IPC"
}
]
接口调用
可以使用例如PostMan之类的工具,请求上面的接口
json-server 数据库会根据请求方式不同,对数据库json文件进行变更
-
GET
- 查询一个KEY下的所有对象数据
- 查询一个KEY下的所有对象数据
-
POST
-
在KEY下添加数据对象,ID字段必传
-
POST请求执行成功后,db.json 的文件会被修改
-
-
PUT
-
Body中需要传入一个对象,ID字段必填
-
PUT执行后,会在KEY查找ID相同的对象,并替换,不存在则会创建对象
-
-
DELETE
- 删除一个对象,ID字段必传
- 删除一个对象,ID字段必传
实践使用
-
在依赖的外部接口还未开发完成时,可以先对齐接口文档
-
将开发人员的window机器作为服务器,在本地部署server,按照约定的接口文档配置模拟接口参数
-
在代码中将依赖的外部接口替换为server的URL,继续开发测试
局限性
-
json-server可以自动对json数据库中的对象进行CRUD,但是无法定制化POST/PUT/DELETE的响应的内容
-
建议在开发测试环境中使用,开发的window机器作为服务器,在本地部署server,按照约定的接口文档配置模拟接口参数
-
在代码中将依赖的外部接口替换为server的URL,继续开发测试
局限性
- json-server可以自动对json数据库中的对象进行CRUD,但是无法定制化POST/PUT/DELETE的响应的内容
- 建议在开发测试环境中使用