vue 封裝http請求時錯誤信息提示使用element-ui message,只提示一次


問題:

多個接口錯誤信息返回,提示信息太多頁面看着很煩。

http.js

import axios from 'axios'
import { Message } from 'element-ui'
import router from '../router'
const showMessage = Symbol('showMessage')
// 重寫
class DonMessage {
    success (options, single = true) {
      this[showMessage]('success', options, single)
    }
    warning (options, single = true) {
      this[showMessage]('warning', options, single)
    }
    info (options, single = true) {
      this[showMessage]('info', options, single)
    }
    error (options, single = true) {
      this[showMessage]('error', options, single)
    }
  
    [showMessage] (type, options, single) {
      if (single) {
        // 判斷是否已存在Message
        if (document.getElementsByClassName('el-message').length === 0) {
          Message[type](options)
        }
      } else {
        Message[type](options)
      }
    }
  }
// 使用這個
var MessageOnce = new DonMessage(); axios.interceptors.request.use(config => { let user = JSON.parse(window.localStorage.getItem('user')); var Authentication = ""; if (user) { console.log(user.Authentication); Authentication = user.Authentication; } config.headers.common['Authentication'] = 'xxxxxxx'; return config; }, err => { Message.error({ message: '請求超時!' }); // return Promise.resolve(err); }) axios.interceptors.response.use(data => { console.log(data.status); return data; }, err => { switch (err.response.status) { case 401: MessageOnce.error({ message: "登錄信息已失效,請重新登錄" }); window.localStorage.removeItem("user"); router.replace({ path: '/', query: { redirect: router.currentRoute.fullPath } }) break; case 500: MessageOnce.error({ message: "服務器內部錯誤" }); break; case 404: MessageOnce.error({ message: '服務器被吃了⊙﹏⊙∥' }); break; case 403: MessageOnce.error({ message: '權限不足,請聯系管理員!' }); break; } // return Promise.resolve(err); }) let base = 'http://192.168.0.199:8082'; // let base = ''; export const postRequest = (url, params) => { return axios({ method: 'post', url: `${base}${url}`, data: params, headers: { 'Content-Type': 'application/json; charset=utf-8' } }); } export const uploadFileRequest = (url, params) => { return axios({ method: 'post', url: `${base}${url}`, data: params, headers: { 'Content-Type': 'multipart/form-data' } }); } export const putRequest = (url, params) => { return axios({ method: 'put', url: `${base}${url}`, data: params, // transformRequest: [function (data) { // let ret = '' // for (let it in data) { // ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' // } // return ret // }], headers: { // 'Content-Type': 'application/x-www-form-urlencoded' 'Content-Type': 'application/json; charset=utf-8' } }); } export const deleteRequest = (url) => { return axios({ method: 'delete', url: `${base}${url}` }); } export const getRequest = (url) => { return axios({ method: 'get', url: `${base}${url}` }); }


免責聲明!

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



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