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-wWatch file(s)是否监听
–routes-r指定自定义路由
–readonly–roAllow only GET requests[布尔]
–delay-dAdd 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下的所有对象数据
      在这里插入图片描述
  • POST

    • 在KEY下添加数据对象,ID字段必传
      在这里插入图片描述

    • POST请求执行成功后,db.json 的文件会被修改
      在这里插入图片描述

  • PUT

    • Body中需要传入一个对象,ID字段必填
      在这里插入图片描述

    • PUT执行后,会在KEY查找ID相同的对象,并替换,不存在则会创建对象
      在这里插入图片描述

  • DELETE

    • 删除一个对象,ID字段必传
      在这里插入图片描述

实践使用

  • 在依赖的外部接口还未开发完成时,可以先对齐接口文档

  • 将开发人员的window机器作为服务器,在本地部署server,按照约定的接口文档配置模拟接口参数

  • 在代码中将依赖的外部接口替换为server的URL,继续开发测试

局限性

  • json-server可以自动对json数据库中的对象进行CRUD,但是无法定制化POST/PUT/DELETE的响应的内容

  • 建议在开发测试环境中使用,开发的window机器作为服务器,在本地部署server,按照约定的接口文档配置模拟接口参数

  • 在代码中将依赖的外部接口替换为server的URL,继续开发测试

局限性

  • json-server可以自动对json数据库中的对象进行CRUD,但是无法定制化POST/PUT/DELETE的响应的内容
  • 建议在开发测试环境中使用