# 为什么需要数据模拟

在一些前后端分离的项目中，后端提供 CGI 接口，而前端通过发送 ajax 请求来获取数据。

## 1. 提高并行开发时的效率

理想状况下，CGI 准备完成之后，前端再投入，合力完成项目开发。但实际中，大部分时候两者几乎是并行开发的。就意味着前端在投入开发时，在缺乏 CGI 的数据的情况下，可能将无法实现业务逻辑。

在此情况下，前端可以自己构造数据，完成业务逻辑代码实现，最后在 CGI 准备好之后进行接口联调。这将极大提高并行开发时的效率。

## 2. 提高联调 CGI 接口的效率

联调接口时，除了对齐接口字段之外，实际上还包含着业务逻辑的联调。

例如一个账号信息查询接口返回数据中包含一个 `type` 字段，它的值可能有几个含义：`1=教师，2=学生，3=家长`。前端页面中可能会针对不同的 `type` 值，展示不同的 UI 和逻辑交互。在联调这个接口时，我们如果真的注册三个账号来调试，则需要不停切换账号，效率将会非常低。

另外一些情况下，要命中某些逻辑，需要一些限制条件，而这种限制条件往往较难构造。例如一个提现的接口，就得分别验证：有足够的钱、没有足够的钱及未实名验证等场景，然后又不同的交互。前端完成可以自行构造需要的数据，用来完成 UI 交互的开发，而不必真的取让CGI开发的同学来帮你构造。

### 3. 降低对 CGI 的强依赖

开发场景下，CGI 同学也在修改代码，可能会改出问题，或者遇到测试环境突然挂了的时候，如果没有数据模拟，前端同学就只能干睁眼了。

而出现现网问题时，为了复现前端的问题，往往也需要自行构造一些数据，以便修复前端UI交互的逻辑错误。
