fetch的使用--当无法判断后台返回数据为什么类型时如何操作

在不确定后台返回数据类型的场景下,使用fetch请求可能会遇到解析错误。通过在fetch后设置三个then处理不同状态的返回值:1) 判断请求是否成功,失败则返回错误信息;2) 成功后根据操作类型决定使用response.text()还是response.json();3) 对增删改操作,检查是否返回message,有则解析并展示,无则忽略,其他操作直接返回数据。
摘要由CSDN通过智能技术生成

需求:一个增删改查页面,当新增,删除或者修改操作时不确定后台会返回的信息(会根据需求不同请求成功后可能返回message,可能什么都不返回)

问题:使用fetch进行请求时, Fetch API 的 Response 接口呈现了对一次请求的响应数据,response解析数据的方法我用到的为response.json()和response.text(),因为response可以获取到状态码,请求状态,但是在解析之前是不清楚返回到结果用哪种方式解析的,如果后台返回的为空还用json的方式就会报错   "Unexpected end of JSON input"

解决:

在fetch请求后使用了三个then去处理各种状态的返回值:

  1)第一个then判断是否请求成功,失败则直接返回错误信息

  2)成功则在第二个then中判断mothed类型,若为增删改状态则返回response.text(),其他类型返回response.json()

  3)第三个then接收第二个then的返回值,若mothed类型为增删改则判断后台是否返回了message,返回则进行解析并渲染出返回值,若无返回值则不进行操作,其他类型则直接返回第二个then中的返回值


const checkStatus = response => {
 //当请求成功时直接返回response,失败则进行json解析返回失败信息
if (response.status == 200) { return response }else{
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值