Vue axios攔截器 qs序列化 FormData配置


/*
 * @Description: 攔截器
 * @Version: 1.0
 * @Autor: Nanke_南柯
 * @Date: 2020-09-04 09:07:31
 * @LastEditors: Nanke_南柯
 * @LastEditTime: 2020-10-21 16:24:27
 */
import axios from 'axios'
import {
    Message
} from 'element-ui'

import qs from 'qs'

let timeout = 8000;

// 創建一個axios實例
const service = axios.create({
    baseURL: process.env.VUE_APP_URL,
    timeout: timeout,
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
    }
})
let mark = 'API_ONE';//區分請求哪一個域名
// 請求攔截器
service.interceptors.request.use(
    config => {
        if (config.requestBaseUrl === 'one') { // API 志豪
            config.baseURL = process.env.VUE_APP_URL
            mark = 'API_ONE'
        }
        if (config.requestBaseUrl === 'two') { // API 大屏
            config.baseURL = process.env.VUE_APP_URL2
            mark = 'API_TWO'
        }
        // 請求前
        if (config.method === 'post') {
            config.data = qs.stringify(config.data)
        }
        return config
    },
    error => {
        // 做一些請求錯誤
        return Promise.reject(error)
    }
)
//  響應攔截器
service.interceptors.response.use(
    /**
     *通過自定義代碼確定請求狀態*/
    response => {
        const res = response.data
        if (mark === 'API_ONE') {
            if (res.code != 0) {
                Message({
                    message: res.msg || '后台異常',
                    type: 'error',
                    duration: 5 * 1000
                });
                return Promise.reject(new Error(res.message || 'Error'))
            } else {
                return res
            }
        } else {
            if (res.Code === "0") {
                Message({
                    message: res.Msg || '后台異常',
                    type: 'error',
                    duration: 5 * 1000
                });
                return Promise.reject(new Error('Error'))
            } else {
                return res
            }

        }

    },
    error => {
        const ISture = error.message.indexOf('500') == -1
        if (ISture) {
            Message({
                message: `網絡超時,請求時間大於${timeout / 1000}秒未成功響應,請刷新重試`,
                type: 'error',
                duration: 6 * 1000
            });
        } else {
            Message({
                message: '服務器返回:500錯誤',
                type: 'error',
                duration: 5000
            })
        }
        return Promise.reject(error)
    }
)
export default service


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM