MockStore,为客户端 Mock 做点微小的工作

未来已来2018-09-06 10:50

作者:包勇明


在实际的前端开发工作中,如果要调用的服务端接口还不可用,前端工程师一般会使用 Mock 数据。

Mock 数据,一般的做法是根据字段的类型生成随机值,NEI 接口管理平台 采用的就是这种方式。我们还可以再加一些智能推断,比如,如果字段是以 time 结尾的,就生成随机日期数,还可提供诸如默认值、生成规则这样的功能,它们都是用来生成个性化数据的方案。

目前,NEI 只有一种方式来获取 HTTP 接口的 Mock 数据:使用本地构建工具,它会根据接口的定义生成接口的 Mock 数据,它们是在本地的,开发人员可以随时修改。这种方式虽然很方便,但有几个不足之处:

  • 依赖构建工具,需要在本地安装。
  • Mock 数据一般就给自己使用,如果想在团队成员之间共享,就需要把 Mock 数据也放到代码仓库里面,无形中给代码仓库造成文件体积方面的压力。
  • Mock 数据是随机生成的,没有实际意义,而在实际开发中,很多时候都需要真正的测试数据,比如商品数据、歌曲数据等等,这样才能尽可能地模拟实际的业务逻辑。很多在使用 NEI 的前端团队,都会自己再开发一些 Mock 工具用来生成对他们的产品有意义的 Mock 数据。
  • 接口之间是互相独立的,缺乏关联性。比如调用创建商品的接口后,再调用获取商品列表的接口,此时并没有之前创建的商品数据。

MockStore 实现的功能

MockStore,是 NEI 推出的一个新功能,顾名思义,它是指保存 Mock 数据的能力,它提供了以下功能:

  • 用户可以在 NEI 平台上面输入并保存自己想要的 Mock 数据。在保存 Mock 数据时,会进行基本的验证,比如字段类型、字段缺失以及字段多余等情形。因为数据是用户自己录入的,这样就解决了 Mock 数据没意义的问题。
  • NEI 平台会提供在线的可跨域访问的接口供所有人调用,当然还需要凭证才可以调用接口,目前采用的方式是使用项目的唯一工具标识,所以这个信息要保护好不能泄漏给无关人员。这样就解决了 Mock 数据不能在团队中共享的问题。
  • Connect 功能:将不同的接口和同个数据模型进行关联,这就意味着不同的接口都是在操作同个实体对象,和实际情况一致,这样就解决了接口之间缺乏关联性的问题。

MockStore 实现功能的补充说明:

  • 只可以保存 http 接口响应结果的 Mock 数据,并且要求响应结果的类别必须是哈希或者数组,其他类别暂不支持,如有需要,可以直接使用默认值功能。其他地方的 Mock 数据(比如 http 接口的请求数据、页面模板中的 Mock 数据等)无法保存,因为没有保存的必要。
  • 前置业务逻辑脚本。在请求到达服务器之后、在执行具体业务逻辑之前的用户自定义的可执行脚本。比如,可以用来检验参数的合法性等。
  • 后置业务逻辑脚本。在服务器返回数据之前的用户自定义的可执行脚本。比如,可以用最终返回的数据按照请求参数进行分页处理。
  • Connect,它包含以下功能:
    • 和某个数据模型进行关联。考虑到这个数据模型要有意义才行,所以它必须哈希类别,并且要有 id 字段,同时 id 字段的类型必须是字符串或者数值。
    • 关联类型,覆盖了所有常见的情况,具体是:
    • 按 id 加载单个
    • 加载所有
    • 按 id 列表加载多个
    • 创建单个
    • 按数组数据创建多个
    • 按 id 更新单个
    • 更新所有
    • 按数组数据更新多个
    • 按 id 删除单个
    • 删除所有
    • 按 id 列表删除多个
  • NEI 平台之前已经提供的根据数据模型批量创建 CRUD 接口的时候,创建完的接口会自动和数据模型关联,并且也会设置好关联类型。

MockStore 的功能就介绍到这里,在使用它之前还请阅读:


网易云大礼包:https://www.163yun.com/gift

本文来自网易实践者社区,经作者包勇明授权发布