前言:
官方推荐是网络请求Fetch 今天记录下这个Fetch
片段一:不同
Ajax JQuery-Ajax axios fetch区别:
传统 Ajax 指的是 XMLHttpRequest(XHR)最早出现的发送后端请求技术,隶属于原始js中,核心使用XMLHttpRequest对象
JQuery-Ajax 是对原生XHR的封装,除此以外还增添了对JSONP的支持
axios 从浏览器中创建XMLHttpRequest 从node层发起http请求 支持 Promise API
自动转json 客户端支持防止CSRF(因为从cookie里面获取key值后发送到服务端会检测).提供了一些并发请求的接口
Fetch 是基于promise设计的 脱离了XHR
符合关注分离,没有将输入、输出和用事件来跟踪的状态混杂在一个对象里 .更好更方便的写法
片段二:缺点
fetch只对网络请求报错,对400,500都当做成功的请求,服务器返回 400,500 错误码时并不会 reject,只有网络错误这些导致
请求不能完成时才会被 reject。
fetch默认不会带cookie,需要添加配置项: fetch(url, {credentials: 'include'})
fetch没有办法原生监测请求的进度,而XHR可以
片段三:真实的fetch
fetch 是一个 low-level 的 API,它注定不会像你习惯的 $.ajax 或是 axios 等库帮你封装各种各样的功能或实现。
也正是因