vue axios 二次封裝

import axios from 'axios';
import QS from 'qs';

// 環境的切換
// if (process.env.NODE_ENV === 'development') {
// axios.defaults.baseURL = 'http://172.16.70.100:9999/qd';
// } else if (process.env.NODE_ENV === 'production') {
// axios.defaults.baseURL = 'https://www.production.com';
// }

axios.defaults.timeout = 5000;
// http request 攔截器
axios.interceptors.request.use(
config => {

config.headers = {
  'Content-Type':'application/x-www-form-urlencoded'
}
return config;

},
error => {

return Promise.reject(error);

}
);

// 響應攔截器即異常處理
axios.interceptors.response.use(
response => {

if (response.status === 200) {
  return Promise.resolve(response);
} else {
  return Promise.reject(response);
}

},
err => {

if (err && err.response) {
  switch (err.response.status) {
    case 400:
        console.log('錯誤請求')
      break;
    case 403:
      console.log('拒絕訪問')
      break;
    case 404:
      console.log('請求錯誤,未找到該資源')
      break;
    case 500:
      console.log('服務器端出錯')
      break;
    case 501:
      console.log('網絡未實現')
      break;
    case 502:
      console.log('網絡錯誤')
      break;
    default:
      console.log(`連接錯誤${err.response.status}`)
  }
} else {
  console.log('連接到服務器失敗')
}
return Promise.resolve(err.response)

})

export default {

get(url, params){
  return new Promise((resolve, reject) => {
      axios.get(url,{
        params:params
      }).then(res => {
        resolve(res.data);
      }).catch(err =>{
        reject(err.data);
      })
  })
},
post(url, params) {
  return new Promise((resolve, reject) => {
       axios.post(url, QS.stringify(params))
      .then(res => {
          resolve(res.data);
      })
      .catch(err =>{
          reject(err.data)
      })
  });
}

};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章