封裝axios

jia___qi發表於2020-09-29
const axios=require('axios');   //建立axios物件
axios.defaults.baseURL='http://192.168.56.100:8888'; //vue請求後端地址
axios.defaults.timeout=1000;                   //多久超時
axios.defaults.withCredentials= true;          //攜帶cookie需要新增
/**
 * 設定請求傳遞資料的格式(看伺服器要求的格式)
 * x-www-form-urlencoded
 * 預設提交表單
 * 把資料物件序列化成 表單資料
 */
//axios.default.headers['Content-Type']='application/x-www-form-urlencoded';
//axios.default.transformRequest=data =>qs.stringify(data);
/**
 *設定預設提交JSON
 * 把資料物件序列化成json字串
 */
axios.defaults.headers['Content-Type']='application/json';
axios.defaults.transformRequest=data =>JSON.stringify(data);


//請求攔截器
axios.interceptors.request.use(config=>{
  //從localStorage獲取token
  let token = localStorage.getItem('token');
  //如果有token,就把token設定到請求頭中Authorization欄位中
  token &&(config.headers.Authorization=token);
  return config;

  },error=>{
  return Promise.reject(error);
  }
);

//響應攔截器
axios.interceptors.response.use(response=>{
  //當響應碼 2xx的情況,進入這裡
  return response.data;
  },error => {
  //當相應碼不是2xx的情況,進入這裡
  return error
  }
);
//get方法,對應get請求
//@params{String} url[請求的url地址]
//@params{Object} params[請求時攜帶的引數]
export function get(url,params,headers) {
  return new Promise((resolve,reject)=>{
    axios.get(url,{params,headers}).then(res=>{
      resolve(res.data.ResultObj)
    }).catch(err=>{
      reject(err.data)
    })
    }

  )
}
//post方法,對應post請求
export function post(url,params,headers) {
  return new Promise((resolve,reject)=>{
      axios.post(url,params,headers).then((res)=>{
        resolve(res.data)
      }).catch(err=>{
        reject(err.data)
      })
    }

  )
}

export default axios;

相關文章