react項目簡單二次封裝axios(滿足項目開發)

1、cnpm i axios -S
2、直接上代碼(根據項目配置,自行更改代碼)

import axios from 'axios';
import { notification } from 'antd';
import $$ from 'cmn-utils';
// 創建axios實例
const headers = (function(){
    let token = $$.getStore("token")
    return token ? { Auth: token } : {}
})()
const service = axios.create({
    baseURL: '',
    timeout: 15000, // 請求超時時間
    headers
})
const codeMessage = {
    200: '服務器成功返回請求的數據。',
    201: '新建或修改數據成功。',
    202: '一個請求已經進入後臺排隊(異步任務)。',
    204: '刪除數據成功。',
    400: '發出的請求有錯誤,服務器沒有進行新建或修改數據的操作。',
    401: '用戶沒有權限(令牌、用戶名、密碼錯誤)。',
    403: '用戶得到授權,但是訪問是被禁止的。',
    404: '發出的請求針對的是不存在的記錄,服務器沒有進行操作。',
    406: '請求的格式不可得。',
    410: '請求的資源被永久刪除,且不會再得到的。',
    422: '當創建一個對象時,發生一個驗證錯誤。',
    500: '服務器發生錯誤,請檢查服務器。',
    502: '網關錯誤。',
    503: '服務不可用,服務器暫時過載或維護。',
    504: '網關超時。',
};

service.interceptors.response.use(
    function (response) {
        //請求正常則返回
        if (response.status === 200) {
            return Promise.resolve(response.data)
        } else if (response.status === 403) {
            // 未登錄或者登陸失效
            return Promise.resolve(response.data)
        }
        notification.error({
            message: response.status,
            description: response.statusText,
        });
    },
    function (error) {
        // 請求錯誤則向store commit這個狀態變化
        const httpError = {
            hasError: true,
            status: error.response.status,
            statusText: error.response.statusText,
            info: codeMessage[error.response.status] || ""
        }
        notification.error({
            message: httpError.status,
            description: httpError.statusText,
            info: codeMessage[error.response.status] || ""
        });
        return Promise.reject(error)
    }
)

export default service
發佈了42 篇原創文章 · 獲贊 22 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章