前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础 | Fetch -- http请求的另一种姿势

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

作者头像
用户1097444
发布2022-06-29 15:59:34
7240
发布2022-06-29 15:59:34
举报
文章被收录于专栏:腾讯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的变化与基础实现

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯IMWeb前端团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档