我們為什么要對axios進行二次封裝?
因為我們可以使用請求攔截器在發送請求之前處理一些業務,使用響應攔截器在服務器數據返回后處理一些業務。
我們通常創建一個api文件夾,再創建一個request.js文件,用于存放重寫后的axios。
// 引入axios
import axios from "axios";// 利用axios對象的create 方法去創建一個axios實例,我們可以對其進行配置
const requestObj = axios.create({// 基礎路徑:一般我們發送請求時都會出現apibaseURL: "/api",// 請求超時的時間timeout: 5000
});// 請求攔截器:在請求發送之前,請求攔截器檢測到,也可以在請求發出去之前做一些事情
requestObj.interceptors.request.use((config) => {// config:配置對象,其中有headers請求頭return config;
})// 響應攔截器
// 有成功請求函數和失敗回調函數
requestObj.interceptors.response.use((res) => {// 成功回調函數:直接返回請求的數據return res.data;
}, (error) => {// 失敗回調函數:返回一個Promise對象return Promise.reject(new Error('faile'));
})export default requestObj;