fetch API获取返回值的方式

使用fetch API来做后端请求,相比较传统的Ajax方式,在写出的代码上更加容易理解,也更便于别人看懂。但是在使用的过程中,经常有同学不能顺利从传统的Ajax请求(如果使用jquery的话,就是$.ajax,$.post,$.get)转移到新的fetch方式,很多时候就是卡在了获取响应数据的环节上。

用fetch来获取数据,如果响应正常返回,我们首先看到的是一个response对象,其中包括返回的一堆原始字节,这些字节需要在收到后,需要我们通过调用方法将其转换为相应格式的数据,比如JSONBLOB或者TEXT等等。

比如,我们通过下面的请求,是无法读取到网页内容的:

fetch('https://www.baidu.com/').then(res => console.log(res))  

打印出来的仅仅是一个原始的response对象而已,从中看不到任何的返回内容。

而为了能够读取到返回的内容,我们需要在收到response对象后,立即将其转换为我们想要的格式,比如TEXT:

fetch('https://www.baidu.com/').then(res => res.text()).then(res => console.log(res))  

这样,我们能看到控制台正确输出了返回的网页内容。通过第二次回调才能获取到具体的返回数据,这可能是一开始使用fetch时,让我们感到不太习惯的地方,但是当我们习惯之后,fetch的接口用起来是非常直观和便利的。

如果返回的数据是json,就可以调用res.json()方法,将返回内容转成json对象,除此之外还有转换为其它类型数据的方法,具体请参考如下的资源:

参考文章:https://davidwalsh.name/fetch
官方文档:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

### 使用 Fetch API 结合 ElementUI 处理请求返回值 当使用 `fetch` 发起 HTTP 请求并结合 ElementUI 组件库时,处理响应数据的方式如下所示: 对于成功的响应,通常会解析 JSON 数据,并将其传递给组件的状态或其他逻辑部分。而对于错误的响应,则可能涉及到状态码判断以及特定情况下的异常处理。 #### 成功响应处理 成功获取到服务器端的数据之后,应该更新前端应用中的相应状态或变量来反映最新的信息。这可以通过 Vue 的响应式特性完成,在 ElementUI 中也是一样的操作方式。 ```javascript async function fetchData() { try { let response = await fetch('/api/data'); if (!response.ok) throw new Error(`HTTP error! Status: ${response.status}`); let result = await response.json(); this.$message({ message: "Data fetched successfully", type: 'success' }); // 更新 UI 或者其他业务逻辑 console.log(result); } catch (err) { handleError(err); } } ``` #### 错误响应处理 如果遇到非 2xx 范围内的 HTTP 状态码或者其他类型的网络错误,应当适当地通知用户,并采取必要的措施恢复应用程序的功能。这里展示了如何检测无效 Token 并执行相应的动作[^2]。 ```javascript function handleError(error) { if (error.message.includes('invalid_token')) { removeToken(); // 清除本地存储中的 token store.dispatch('user/logout'); // 触发 Vuex Store 登出流程 router.push('/login'); // 导航至登录页面 this.$message.error("Session expired, please log in again."); } else { this.$message.error(`An unexpected error occurred: ${error.message}`); } return Promise.reject(error); } ``` 上述代码片段中包含了两个主要的部分:一个是正常的请求发送与结果接收;另一个则是针对可能出现的各种错误情况进行妥善管理。通过这种方式可以在保证用户体验的同时维护系统的稳定性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值