[工程架构思考-请求] 小-team-的-接口-mock-方案

56 阅读5分钟

我来请教一个问题,各位同学,特别是前端同学。在没有 test环境,前后端之约定好API的情况下,你们是怎么快速mock数据的呢?

最基础的场景: 增删改查接口,还附带了一些逻辑判断(新增之后,list接口要➕1,删除之后,list -1)是自己起一个express服务器吗?还是怎么做的呢

我个人的做法:利用json-server 和 mockjs 来做,自己在里面写业务逻辑。维护一个变量,起到类似数据库的功能

群里的同学A:你没用文档管理的工作吗

咋说呢,比较痛苦。并没有。文档很多时候是我催促了很多遍才有的。甚至直接是数据库 table定义[捂脸]

群里的同学B:mockjs不是也能拦截请求吗?为什么还要启动jsonsever

之前做东西或者项目还是被动了些,现在开始主动思考这些该怎么做了。特别是 前端人数比较少,前后端的工作量都比较大(半个月的项目直接压缩到一周)

「群里的同学B:mockjs不是也能拦截请求吗?为什么还要启动jsonsever」


mockjs会有一些问题,我用mockjs只是单纯模拟数据。但有时候会有401 auth这些逻辑在里面。而且mockjs会有一些小问题,具体可以搜一下 element-admin这个项目的issue

群里的同学C:yapi比较好用

我现在是利用json-server,本质上就是express。自己写一些简单的node代码,需要批量mock数据的,利用mockjs 模拟几十条。这样只要替换 切到测试或者联调的话,就直接更改vue 的proxy,或者 react的proxy就行了

「群里的同学C:yapi比较好用」


我自己之前也搭建过一套,请教下 你们这部分是后端在yapi配置好接口吗还是前端去配置? 我打算回头把我自己用的json-server 和mockjs的方案开源下,听听大家对这个的看法。 之前搭建的yapi也没用起来,官方维护意愿也不强,提问多数没人回答。

「群里的同学D:简单的yapi都可以搞定」


我可能要去再学习下,其实蛮好的。只是后端要开发,并不愿意去写。 yapi如果公司有运维team 其实蛮好的,或者后端主动些。 但前端去搭建yapi就略微困难了些,涉及到申请机器,部署,这些都不是问题。我遇到的其实是数据备份和迁移的问题。万一机器集体维护了怎么办[捂脸]

群里的同学E:我觉得原本这就是后端首先改考虑的


我们这边感觉后端就是一顿写逻辑,生态建设比较差。Jenkins也是最近才真正用上其实。整个生态建设很落后,都成立五年了,基础短板还是蛮明显的。 之前遇到一个尴尬的场景,我接受同事的项目,有个页面需要改进,因为接口查询量大,查不出来。要改成用户手动填写的形式。post数据要和之前一致。但很尴尬,我看不到之前的接口数据(数据量大,一直查不出来。导致数据结构看不到。页面看起来有些费劲,还看到了一行500字符的jsx)。后来直接请后端同事发了一段根据后端代码mock的数据结构把response字段那部分拿过来 mock了一部分数据,才看懂页面结构[捂脸]

「小小鲁班-南京-前端:我打算回头把我自己用的json-server 和mockjs的方案,听听大家对这个的看法」


有时候想想 人数少的team 可能其实不适合 yapi或者rap2 这种方案,成本略微高了些

反而我觉得把数据mock的方案集成在前端项目里也不错。这样别人维护的时候。就直接能看到response了(我这样说是因为,比如之前接口数据量大,拿不到数据。 或者没有加注释,只有一个response对象,亦或没有对list item 没有添加 类似ts的类型定义,导致前端一脸懵逼,根本不清楚后端返回的response是啥样)

也就是在这个时候,我才觉得typescript 挺香的

我们之前还有个问题,项目部署在海外,经常性无法访问接口进行测试,后来就有了公众号里面一篇文章:利用 proxyagent来代理接口,才没有504 的问题,回想起来,异常痛苦

感觉比较好的方案是(适合小team,大团队另说了)

  1. 前端写注释,注释里说明下大概的接口数据结构
  2. 前端项目中留一份 mock的数据,或者是从后端接口中保留的数据
  3. 本地留一个mock 接口
  4. 采用ts 对接口返回数据类型进行定义

也给各位求职的同学一些建议,我觉得这些也都是考验一个team水平的问题,可以问问。基础建设有时候也决定了这个team研究的深度,基础建设做好了,就能为其他方面节省很多时间了

群里的同学B:yapi 备份还好,就是mongodb的数据库,nodejs+mongodb 这一套,前端都会一点


话说,更实际的问题。怎么推动别的team或者前端用呢? 徒增烦恼,算是吐槽了。回头把这些总结下,放到博客里面去吧(也算是自己现在这个阶段的一些总结了)

yapi 安利给同事用了。我用yapi觉得一些麻烦,不够灵活,感觉更多是我个人原因。但几个同事最后也都没用在项目里[捂脸](我其实并没有做后学调研,比如为何不用了,也许只是当时发给了同事只是去看了一下)

我们这边属于,得紧跟着后端要接口约定才行,要不然会出现等他开发完了,和你说,我给你接口的情况。也去搜搜别人的方案, 希望能在这个问题上自己能给出自己认为还算还用的一个方案吧