封裝一個http請求文件


import axios from 'axios';
import { Message } from 'element-ui';


let baseURL = '';
if (process.env.NODE_ENV === 'development') {
  baseURL = '';  //設置自己的baseURL
}

const service = axios.create({
  baseURL
  // timeout: 240000  // request timeout455445424
});

// request interceptor
service.interceptors.request.use(config => {
  config.headers = {
    'Content-Type': 'application/json;charset=utf-8'
  };
  return config;
}, error => {
  // Do something with request error
  Promise.reject(error);
});

const codeMessage = {
  200: '服務器成功返回請求的數據。',
  201: '新建或修改數據成功。',
  202: '一個請求已經進入后台排隊(異步任務)。',
  204: '刪除數據成功。',
  400: '發出的請求有錯誤,服務器沒有進行新建或修改數據的操作。',
  401: '用戶沒有權限(令牌、用戶名、密碼錯誤)。',
  403: '用戶得到授權,但是訪問是被禁止的。',
  404: '發出的請求針對的是不存在的記錄,服務器沒有進行操作。',
  406: '請求的格式不可得。',
  410: '請求的資源被永久刪除,且不會再得到的。',
  422: '當創建一個對象時,發生一個驗證錯誤。',
  500: '服務器發生錯誤,請檢查服務器。',
  502: '網關錯誤。',
  503: '服務不可用,服務器暫時過載或維護。',
  504: '網關超時。'
};
/**
 * @function 請求狀態碼檢測
 * @param  {type} response {description}
 * @return {type} {description}
 */
const checkStatus = response => {
  if (response.status >= 200 && response.status < 300) {
    return response;
  }
  const errortext = codeMessage[response.status] || response.statusText;
  Message({
    message: `請求錯誤 ${response.status}: ${response.url},${errortext}`,
    type: 'error',
    duration: 5 * 1000
  });
  const error = new Error(errortext);
  error.name = response.status;
  error.response = response;
  throw error;
};
/* 返回一個Promise(發送post請求) */
 const fetch = (type, url, params) => {

  return new Promise((resolve, reject) => {
    const data = (type === 'get' || type === 'delete') ? { params: params } : params;
    service[type](url, data)
      .then(checkStatus)
      .then(response => {
        const resultData = response.data;
        const code = resultData.code || resultData.R;
        if (code === 200 || code === 220 || code === 299) {
          resolve(resultData);
        } else if (code === 1) {
          Message({
            message: resultData.message || resultData.msg,
            type: 'error',
            duration: 5 * 1000
          });
          reject(new Error(resultData.message));
        } else {
          if (resultData.message !== '異常') {
            Message({
              message: resultData.message || resultData.msg,
              type: 'error',
              duration: 5 * 1000
            });
          }
          reject(new Error(resultData.message));
        }
      }).catch((error) => {
        reject(error);
      });
  });
};

export default fetch;


免責聲明!

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



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