axios封裝攔截器

Axios 是一個基于 promise 的 HTTP 庫,可以用在瀏覽器和 node.js 中。很多情況我們要對請求和其響應(yīng)進行特定的處理;如果請求數(shù)非常多,單獨對每一個請求進行處理會變得非常麻煩。好在強大的axios為開發(fā)者提供了這樣一個API:攔截器。攔截器分為 請求(request)攔截器和 響應(yīng)(response)攔截器。

安裝 axios,qs

npm install axios –save-dev

安裝 qs

npm install qs –save-dev

請求攔截器

//引入axios和 qs
import axios from "axios";
import qs from "qs";
/****** 創(chuàng)建axios實例 ******/
const serve = axios.create({
    baseURL: process.env.BASE_URL,  // api的基本url,也可以直接寫定好的url
    timeout: 5000  // 請求超時時間
});
serve.interceptors.request.use(config => {    
    config.method === 'post'        
        ? config.data = qs.stringify({...config.data})        
        : config.params = {...config.params};    
          config.headers['Content-Type'] = 'application/x-www-form-urlencoded'; 
    return config;
    }, error => {  //請求錯誤處理   
           
        Promise.reject(error)
    }
);

響應(yīng)攔截器

serve.interceptors.response.use(    
    response => {  //成功請求到數(shù)據(jù)        
           
        //這里根據(jù)后端提供的數(shù)據(jù)進行對應(yīng)的處理        
        if (response.data.result === 'TRUE') {            
            return response.data;        
        } else { 
            //打印錯誤信息
            console.error(response.data.data.msg)
             
        }    
    },    
    error => {  //響應(yīng)錯誤處理console.log('error');        
        console.error(error);        
        console.error(JSON.stringify(error));         
        let text = JSON.parse(JSON.stringify(error)).response.status === 404            
            ? '404'            
            : '網(wǎng)絡(luò)異常,請重試';        
        alert(text)        
        return Promise.reject(error)   
    }
)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • axios 基于 Promise 的 HTTP 請求客戶端,可同時在瀏覽器和 node.js 中使用 功能特性 在...
    Yanghc閱讀 3,746評論 0 7
  • 頁面發(fā)送http請求,很多情況我們要對請求和其響應(yīng)進行特定的處理;如果請求數(shù)非常多,單獨對每一個請求進行處理會變得...
    歲末Zzz閱讀 1,998評論 0 0
  • Vue項目越做越多,Axios一直作為請求發(fā)送的基礎(chǔ)工程,這里就深究一下Axios的攔截器相關(guān)的一些邏輯和對應(yīng)一個...
    RandyZhang閱讀 32,925評論 9 31
  • axios 基于 Promise 的 HTTP 請求客戶端,可同時在瀏覽器和 node.js 中使用 功能特性 在...
    jslxm閱讀 4,484評論 0 1
  • 一片樹葉顫抖著躲在 我的門前,正要被風(fēng) 吹走。 如果我要把它 帶到我房間靜止的 空氣中,它就會 靜靜躺在我的窗臺上...
    東豐林波閱讀 199評論 0 0

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