基础 | Fetch -- http请求的另一种姿势

2018 年 2 月 6 日 IMWeb前端社区 请关注

前端爱好者的知识盛宴

传统Ajax是利用XMLHttpRequest(XHR)发送请求获取数据,不注重分离的原则。而Fetch API是基于Promise设计,专为解决XHR问题而出现。


简介


XMLHttpRequest是一个设计粗糙的API,其中配置和调用方式非常混乱。


使用XHR发送一个json请求:

使用fetch做请求后:

es6写法:

处理text/html响应:

获取头信息:

设置头信息:

提交表单:

提交json数据:


fetch特点


1. 语法简洁,更加语义化

2. 基于标准 Promise 实现,支持 async/await

3. 同构方便,使用isomorphic-fetch


fetch兼容性


浏览器兼容性


fetch原生支持性不高,不过可以使用一些polyfill。


1. IE8是es3语法,需要引入es5的polyfill:es5-shim

2. 支持promise语法:es6-promise

3. fetch的polyfill:fetch-polyfill

4. 使用jsonp还需要引入:fetch-jsonp

5. 开启babel的runtime模式,可以使用async/await


fetch常见问题


  1. fetch请求默认不带cookie,需要设置fetch(url,{credentials: 'include'});


  2. 服务器返回400、500错误码不会reject,只有网路错误请求不能完成时才会reject;


总结


fetch API看起来简单,却是js语法不断增强提高带来的改善。


由于项目中普遍会引入各种库去解决底层问题,对于基础api的新增、拓展不太关注,久而久之会产生一种与标准的脱离感。以后应多多关注底层api的变化与基础实现


登录查看更多
0

相关内容

AJAX 即 “Asynchronous JavaScript and XML”(异步的 JavaScript 和 XML 技术)。AJAX 是多项技术的综合应用,通常用于创建更好更快以及交互性更强的 Web 应用程序。
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
119+阅读 · 2019年12月31日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
MIT新书《强化学习与最优控制》
专知会员服务
275+阅读 · 2019年10月9日
3 行代码 5 秒抠图的 AI 神器,根本无需 PS
大数据技术
20+阅读 · 2019年7月24日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
已删除
AI科技评论
4+阅读 · 2018年8月12日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
推荐一些适合小白练手的Python项目
数据挖掘入门与实战
6+阅读 · 2018年5月17日
浅谈浏览器 http 的缓存机制
前端大全
6+阅读 · 2018年1月21日
咦,用浏览器做人脸检测,竟然这么简单?
机器学习研究会
6+阅读 · 2017年9月11日
Arxiv
5+阅读 · 2019年10月11日
Arxiv
5+阅读 · 2019年2月28日
Foreground-aware Image Inpainting
Arxiv
4+阅读 · 2019年1月17日
Arxiv
7+阅读 · 2018年11月27日
Arxiv
3+阅读 · 2018年10月18日
Arxiv
6+阅读 · 2018年5月22日
VIP会员
相关VIP内容
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
119+阅读 · 2019年12月31日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
MIT新书《强化学习与最优控制》
专知会员服务
275+阅读 · 2019年10月9日
相关资讯
3 行代码 5 秒抠图的 AI 神器,根本无需 PS
大数据技术
20+阅读 · 2019年7月24日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
已删除
AI科技评论
4+阅读 · 2018年8月12日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
推荐一些适合小白练手的Python项目
数据挖掘入门与实战
6+阅读 · 2018年5月17日
浅谈浏览器 http 的缓存机制
前端大全
6+阅读 · 2018年1月21日
咦,用浏览器做人脸检测,竟然这么简单?
机器学习研究会
6+阅读 · 2017年9月11日
相关论文
Arxiv
5+阅读 · 2019年10月11日
Arxiv
5+阅读 · 2019年2月28日
Foreground-aware Image Inpainting
Arxiv
4+阅读 · 2019年1月17日
Arxiv
7+阅读 · 2018年11月27日
Arxiv
3+阅读 · 2018年10月18日
Arxiv
6+阅读 · 2018年5月22日
Top
微信扫码咨询专知VIP会员