axios blob 返回json特殊情況處理

前言

?? 今天業(yè)務(wù)提出了一個(gè)需求,導(dǎo)出要做次數(shù)限制,這個(gè)我先簡(jiǎn)單啊,后端接口改一下又限制的時(shí)候返回一個(gè)JSON對(duì)象包含Code和Msg,前端全局?jǐn)r截一下就ok了,那就開(kāi)干吧。后端接口調(diào)整好了,前端配置也好了,but前端沒(méi)攔截到,尷尬了。開(kāi)始排除吧,先把正常攔截的response打印出。


正常攔截的response

正常blob接口preview

下面是特殊情況返回JSON

特殊情況攔截的response

特殊情況blob接口preview

非blob格式的response


非blob格式的response

?? 自此我們發(fā)現(xiàn)responseType: 'blob', 返回的data都是Blob格式,而且特殊情況(即返回JSON)他的Blob 對(duì)象的type:"application/json"。所有我們的思路是先判斷是不是blob格式,然后判斷是不是特殊情況(json),在把blob格式轉(zhuǎn)成json對(duì)象,上代碼

if (Object.prototype.toString.call(response.data) === '[object Blob]') {  // 先判斷是不是blob格式
      if (response.data.type.includes('application/json')) {  // 判斷是不是特殊情況(json)
        let reader = new FileReader()
        reader.onload = function () {
          let res = reader.result
          let result = JSON.parse(res) // blob格式轉(zhuǎn)成json
          if (result.Code === 431) { // 導(dǎo)出超出限制
             // 對(duì)應(yīng)業(yè)務(wù)邏輯
          }
        }
        reader.readAsText(response.data)
      }
    }

總結(jié)

?? 如果幫助到你請(qǐng)給個(gè)贊哈,請(qǐng)copy黨手下留德,標(biāo)明來(lái)源,原創(chuàng)整理不易。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容