当前位置: 首页 > 后端技术 > Node.js

使用node搭建接口Mock工具

时间:2023-04-03 15:33:01 Node.js

背景在项目开发过程中,有一个必不可少的环节——接口联调。由于前后端开发进度不同,有时前端需要等待后端的接口,或者前端需要调试ui,需要接口数据在当地嘲笑。不同的接口返回不同的数据格式。每次都手动mock数据,难免繁琐低效。能否搭建一个自动化的mocking平台,自动从接口文档中获取所有接口的数据格式,然后将mock对应的数据返回给前端?实现的基本原理是:前端发送的接口请求代理到Mock平台,Mock平台根据接口url调整接口文档api得到接口数据格式,并根据生成一个模拟数据接口数据格式并返回给前端;原理很简单,而且我们是非侵入式的,对前端代码非常友好。但在实施过程中也遇到了一些棘手的问题。下面详细解释Mock平台的实现细节。公司的界面分为模块,每个模块包含界面细节。这里我抓取了公司接口文档的3个api/api/module/list这个api返回的是所有的接口模块,返回的是一个数组like[{name:'modulename',_id:32468437}]/api/list?moduleId=xx这个api根据模块id(也就是前面接口返回的module_id)返回模块的所有接口。这里有问题吗?前端使用url请求接口,如何根据url获取接口详情数据?前端请求时是否可以遍历所有url?这绝对是不合适的。我的做法是先遍历所有模块的接口细节,保存url和id的对应关系并序列化一个对象到文件中,然后在node程序运行时将url和id映射到对象。读取内存缓存后,当请求的url无法匹配时,我们重新遍历接口文档中的接口,刷新缓存(限制每小时只能刷新一次,防止不必要的请求)。/api/get?id=xx该api根据接口id返回接口详细数据。我们根据缓存获取到前端请求的url的id后,调用该接口获取接口的数据格式。node层使用koa响应请求并返回mockData,根据接口详情api获取接口数据格式,然后使用Mock生成模拟数据。如何让模拟数据更接近真实数据?这也是一个难题。目前的方法是将特定领域的数据专门化。比如字段名是mobile,它的数据类型是String,但是我们知道它代表的是一个手机号码,所以我们返回一个手机号码。一些特定的领域可以做这种特殊处理。对于其他字段,根据接口类型返回符合类型的随机数据。流程如下图:有待改进。目前,具体字段的处理都是在代码中进行逻辑判断。可以考虑生成配置文件保存。毕竟具体的业务没有太多具体的领域。将它们保存在配置文件中是可行的,并且更易于维护。目前没有检查请求参数,其实也可以验证请求参数的类型是否正确。请求透传。如果有些接口可以在线调整,我们直接调整在线接口返回真实数据,如果在线接口不能调整,则返回模拟数据。