yinguangyao / blog

关于 JavaScript 前端开发、工作经验的一点点总结。
258 stars 12 forks source link

mock server实践 #28

Closed yinguangyao closed 3 years ago

yinguangyao commented 5 years ago

前言

最近在做管理台重构的时候,由于后端没有人力支持,刚哥让我自己用mock数据来模拟接口数据,到时候把方案在组里面分享一下。 于是我调查了现在常用的三种mock方案,最后选择了RAP2来做数据mock。

为什么需要mock?

前后端同时开发的时候,后端接口数据没有出来,甚至接口还没发到测试环境,这个时候前端可以mock接口和假数据,模拟开发;

常见的几种mock方式

  1. 代码里面写死mock数据,等接口好了后,改成动态请求接口,但后期修改量太大
  2. 本地写好一个json文件模拟数据,通过请求json文件获得数据后渲染到页面
  3. 搭建mock服务,定义好请求url和请求字段、响应字段等等,直接请求接口获取模拟数据。

常用的mock方案

  1. Easy-mock
  2. Rap2
  3. yapi

easy-mock

easy-mock 是一个在线模拟后台的数据平台,通过官网注册账户之后,你就可以生成一个在线的API接口,然后通过ajax或者axios就可以访问这个接口了。 Easy-mock允许我们使用mockjs的语法,通过编写模板来生成随机数据实现数据模拟。 mock语法: image_1dlbphc5u10p0omq101dv481ldi9.png-79.5kB 生成mock数据: image_1dlbphpoa14e0184k1pgu11rvcf1m.png-219.7kB

甚至支持编写函数实现更加灵活的数据mock。 编写函数: image_1dlbpi57kqipgr3qhq14rm1ffd13.png-87.8kB 生成mock数据: image_1dlbpiefas4og1pjboapr1ila1g.png-156kB

mockjs

  1. Mockjs语法是由三部分组成,分别是属性名、生成规则和属性值
  2. 属性名即字段名,属性名和生成规则之间用竖线 | 分隔。
  3. 属性值中可以含有 @占位符。
  4. 属性值还指定了最终值的初始值和类型。 更多mockjs语法请看官网:mockjs语法

    rap2

    rap2 是一个可视化接口管理工具 通过分析接口结构,动态生成模拟数据,校验真实接口正确性, 围绕接口定义,通过一系列自动化工具提升我们的协作效率。

  5. 支持mock.js语法:rap2本身基于mock.js
  6. 支持接口管理:可管理url地址,不同模块分类。
  7. 支持团队协作:拥有团队仓库
  8. 支持历史修改操作查看:可查看接口修改情况,但不支持操作回溯。 5.接口共享:不需要重复编写接口

查看成员活动: image_1dlbpoab54a4fgo12bt169p14ig2d.png-127.8kB 接口管理: image_1dlbpopc51k481ukfgpu7cj1ud92q.png-172kB

yapi

yapi是去哪儿团队出品的在线模拟后台的数据平台,它拥有最丰富的界面操作以及最强大的mock定制功能。 相比easy-mock和rap2,yapi的优势在于:

  1. 更丰富的界面化操作,甚至不需要编写mockjs语法
  2. 支持mockjs规则导入
  3. 支持编写脚本运行更复杂的规则
  4. 支持数据导入与导出

数据导入与导出:

image_1dlbq12rhk0v4s2v71n4v13ei37.png-103.5kB 界面化规则:

image_1dlbq1s8t1besptraktmg01dto3k.png-73.3kB 支持编写脚本与期望:

image_1dlbq2fkf1d0576b4m11n6p11mk41.png-57.3kB

在项目中使用

由于这三种mock方案都支持本地部署,所以可以将其部署到内网中。如果不方便进行本地部署,那么也可以直接使用在线服务(yapi的在线服务非常不稳定)。 我们可以在项目中使用nginx或者whistle等进行接口转发,比如将以/mock开头的接口转发到rap2的在线服务上面,这样在项目中可以直接调用rap2的在线服务(注意:yapi的在线服务不支持跨域)。

总结

这三种mock方案,easy-mock和rap2依然需要掌握mockjs的语法,尤其是easy-mock缺少界面化操作,rap2拥有不错的界面操作,但仍需要我们记住部分mockjs语法规则。 而yapi则拥有最为完整的界面,可以让我们摆脱mockjs各种晦涩的语法,完全在界面上填写规则。同时yapi还支持高度定制化脚本,无疑是三种mock服务中功能最强大的一个。