Vue添加請求攔截器

1、現象html

統一處理錯誤及配置請求信息ios

 

2、解決ajax

一、安裝 axios  , 命令: npm install axios --save-devnpm

二、在根目錄的config目錄下新建文件 axios.js  ,內容以下:axios

import axios from 'axios'api

// 配置默認的host,假如你的API host是:http://api.htmlx.club
axios.defaults.baseURL = 'http://api.htmlx.club'    post

// 添加請求攔截器
axios.interceptors.request.use(function (config) {
  // 在發送請求以前作些什麼
  return config
}, function (error) {
  // 對請求錯誤作些什麼
return Promise.reject(error)
});this

// 添加響應攔截器
axios.interceptors.response.use(function (response) {
  // 對響應數據作點什麼
  return response
}, function (error) {
  // 對響應錯誤作點什麼
  return Promise.reject(error)
});url

 

三、在main.js中進行引用,並配置一個別名($ajax)來進行調用:spa

import axios from 'axios'
import '../config/axios'

Vue.prototype.$ajax = axios

如圖:

 

 

四、應用,一個登陸的post如:

this.$ajax({
  method: 'post',
  url: '/login',
  data: {
    'userName': 'xxx',
    'password': 'xxx'
  }
}).then(res => {
  console.log(res)
})

五、當頁面靜止放置過久時,請求出現超時,點擊頁面不進行刷新數據時,能夠響應攔截器處添加404的錯誤處理,如響應攔截器修改成:

// 添加響應攔截器
axios.interceptors.response.use(function (response) {
  // 對響應數據作點什麼
  return response
}, function (error) {
  // 對響應錯誤作點什麼
  // 兼容處理超時時返回的404

  if (responseError && responseError.response && responseError.response.status === 404) {

    // 好比跳轉到登陸頁

    router.push({ name: 'login' })

   }
});

 

3、總結

統一處理方便

相關文章
相關標籤/搜索