fetch请求详解

1.fetch获取资源

会返回一个promise对象,所以可用then等方法。来进行后续处理,下面是鄙人的一个例子,a.txt文件,是当前目录下的一个文件

let url = './a.txt';
fetch(url).then(res => {
    res.text().then(data => {
        console.log(data);
    });
})

fetch获取资源后,返回一个promise对象,所以可用then等方法。(这里的res是请求的结果)。
我们将这个结果打印出来,看看都有些啥,嘿嘿嘿~~~
在这里插入图片描述
这个结果是个对象,包含了请求的状态,对于一次请求是否成功,即是否真的返回数据,我们用Response.ok来判断,看是否为真。

2.特别说明

  • 特别要注意:当http请求返回的状态码是非200时,返回的promise依然是resolve的状态。但是会将 resolve 的返回值的 ok 属性设置为 false 。因此,可以通过ok属性值,判断请求是否正常响应。
  • fetch只有在遇到网络错误或者请求被阻止的时侯,才会reject,并且抛出错误。

3.fetch请求返回的数据

返回的数据格式,是一个Response对象,并不是我们理想中的js对象,所以得转化一下。

return response.json();  // 将 response.body 通过 JSON.parse 转换为 JS 对象

注意:response.json()会返回一个Promise对象。所以,我们可以用.then()的方法进行后续处理,比如,处理转化以后的数据。(.json()方法的作用是将 response.body 通过 JSON.parse 转换为 JS 对象,同时,返回一个promise对象到外部

4.注意点

  • 重要的一个点是:fetch受跨域限制,不能发送用于解决跨域的jsonp请求方式。但是有成熟的三方库可以解决:fetch-jsonp(ajax是可以发送jsonp请求的)

  • 默认情况下,fetch 不会从服务端发送或接收任何 cookies, 如果站点依赖于用户 session,则会导致未经认证的请求(要发送 cookies,必须设置 credentials 选项)。

fetch(url,{
	method: 'POST',
	credentials: 'include' //必须加上这个
}
  • fetch代表着更先进的技术方向,但是目前兼容性不是很好。因此,最好不要在项目使用。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值