最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • mock 请求分发

    正文概述 掘金(blueju)   2021-03-07   530

    背景是这样的

    我们公司的后管项目走的不是 resful 风格的 api,而是走后管网关,后管网关会将请求进行分发,具体怎么分发,有这么以下几点:

    • 请求全部走 POST
    • 请求 URL 统一为 /agrs
    • 数据提交方式为 application/json
    • 数据格式大致分为:
      • 系统报文头
        • 服务名
        • 接口名
        • 接口版本号
        • 系统标识
      • 本地报文头
        • 用户信息
        • 分页信息
        • 设备信息
      • 报文体
        • 视具体情况而变化的动态数据
    • 文件传输走 OSS,不走表单文件流
    • ......

    痛点

    我们前端当然是不可能等后端开发完了才开始写代码的嘛,因此我们需要 mock,然而网关请求分发因为以上的诸多要求,使得 mock 开发十分不方便,有以下:

    1. 按传统方式创建 mock,那么请求 URL 开发的时候是一套,打包的时候又要全部改成 /agrs,这。。。
    1. 需要新 mock 时,按照 umi 的 mock 规范,需要在 mock 文件夹中创建一个 js 文件,并默认暴露一个对象,例如:
    export default {
    	"POST /getApps": {
      	sysHead: {},
        localHead: {},
        body: {},
      }
    }
    

    需要多次写重复代码和重复数据结构(sysHead,localHead),而我只想关注 body 中的 mock 数据

    1. 按照第 2 点,当后端接口的服务名&接口名真正提供后,为了保持一致,我们除了要修改 mock 文件名,还需要修改 mock 文件中所暴露对象中的 URL 名称,麻烦。
    2. 要做到第 3 点,还得有个前提,就是 mock 文件名是与该 mock 所拦截的 URL 是一致的,不然那么多接口看都看不过来,找起来甚是痛苦眼瞎。
    3. 以 js 暴露模块的方式进行 mock,拦截同一 URL 的 mock 是可以被覆盖而不自知的,不清楚的人会出现明明 mock 的 URL 都正确但响应数据却对不上,这种一头雾水的情况
    4. ......


    以上不方便,不是凭空想的,因为是付出了时间、人力,得出的确不方便这个结论的,光是以上第一点,就已经够受了。

    解决

    总体的思路就是:
    只拦截 /agrs 这个 URL,使用 node.js 获取请求报文 request 中的参数服务名和接口名,按设计好的目录结构拼接路径,按路径读取文件并 JSON 格式化,最后返回。

    对应以上痛点的解决措施:

    1. 开发时和打包时保持一致,都是用统一 URL:/agrs。
    2. 不使用 js 暴露模块的方式,直接使用 json 文件,其中放置重点关注的 json 格式 mock 数据,其他重复数据结构会在别处统一整合。
    3. 所设计的目录规范是:目录名称就是服务名,mock 文件名称就是接口名。(第 2 点已提及不需再定义和暴露,因此如果修改不必之前那么麻烦,只需要修改目录名称和文件名称即可)
    4. 在任何系统中,同一目录下是不能出现同名文件夹或同名文件的,按第 3 点的目录规范可解决重复覆盖问题,还能重复别人已有接口。


    其他不多说了,直接上 github,也不是人人都会碰到这种情况,只是帮助内部前端小组提升开发体验的一个小工具库而已,也是作为一个前端小组长该做的事。

    代码不复杂,自我感觉更重要的是,不论遇到大小问题,会去想怎么解决比较好,不断总结,不断积累吧。

    Github

    github.com/blueju/mock…


    起源地下载网 » mock 请求分发

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元