加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

基于HTTP请求拦截,快速解决跨域和代理Mock

发布时间:2019-03-02 20:59:56 所属栏目:教程 来源:邓仲哲
导读:近几年,跟着 Web 开拓逐渐成熟,前后端疏散的架构计划越来越被浩瀚开拓者承认,使得前端和后端可以专注各自的职能,低落雷同本钱,进步开拓服从。 在前后端疏散的开拓模式下,前端和后端工程师得以并行事变。当碰着前端界面展示必要的数据,尔后端对应的

对付 XMLHttpRequest 哀求,在其 open 要领中理会哀求,会见 AMP 按照相应功效判定是否必要继承发送原哀求到靠山处事器,一个 xhr 只有在其 send 要领被挪用时才会真正的提倡 HTTP 哀求,而在 open 要领中无法获取到 send 要领转达的数据,以是拦截产生在 send 要领中。起首单独存储 send 要领中发送哀求时的参数,然后直接返回,确保先不挪用真正的 XMLHttpRequest 的 send 要领,将单独存储的参数天生对 AMP 的哀求,执行上述 AMP 中的判定。

实例

1、界说与原生 XMLHttpRequest API 同名的接口,称为新的 XHR 接口;

2、重定名原生 XMLHttpRequest API 并添加到新的 XHR 接口;

3、在新的 XHR 接口中界说与原生 XMLHttpRequest API 同名的属性和要领;

4、在同名的 open 要领中理会 HTTP 哀求,获得用来在 AMP 查询接口状态的参数(好比域名+哀求要领+路径);

5、拦截将要发送的原哀求,在同名的 send 要领中暂存原哀求要发送的数据,停息原哀求的发送;

6、用 4 中的参数哀求 AMP,查询接口状态,假如接口不存在或是已完成状态,则返回非凡符号,ApiProxy 取出 5 中暂存的数据,转达给原哀求,并继承原哀求的发送;不然,AMP 返回 mock 数据,ApiProxy 直接将该数据返回给原哀求。

Fetch API

对付 Fetch API 而言,由于它是基于 Promise 实现的,拦截较量轻易,只必要在 Fetch API 外层封装一个 Promise 进口,在其提倡 fetch 哀求前,先停息原哀求,理会数据哀求 AMP,并守候相应,判定相应是否有非凡相应码,假若有则继承原哀求,不然跳过原哀求,直接返回 mock 数据。

启动前端署理成果

在前端现实开拓中,可以借助打包器材,好比 webpack,自界说一个可设置的插件,开启后在开拓情形中自动将署理拦截代码插入到主页面里,从而启动前端署理成果。

小结

本文提出的前端署理要领通过将署理职责下沉到前端,镌汰了 mock 处事器(可能接口打点平台)哀求真实营业处事器步调,同时将脚色权限保持在前端哀求中,进一步镌汰了署理所必要包袱的事变量,从底层拦截 HTTP 哀求的要领,绕过了操作赏识器插件做署理带来的赏识器兼容的题目。最后提供的操作打包器材(如 webpack)封装这种署理要领,实现快速插拔的前端署理。

本文作者:邓仲哲,马蜂窝社区研发团队前端开拓工程师,首要认真社区打点靠山,接口打点平台开拓等事变。

附:参考资料

关于跨域:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

关于XMLHTTPRequest:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest

关于Fetch:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API

【本文是51CTO专栏作者马蜂窝技能的原创文章,作者微信公家号马蜂窝技能(ID:mfwtech)】

戳这里,,看该作者更多好文

【编辑保举】

  1. 微博短视频百万级高可用、高并发架构怎样计划?
  2. 微处事架构,多“微”才吻合?
  3. IT架构的本质:事变12年,我的五点感悟
  4. 披荆棘,饿了么数据库高可用架构演进!
  5. 支撑百万并发的数据库架构怎样计划?
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读