美文网首页
axios封装

axios封装

作者: Rose_yang | 来源:发表于2021-08-09 15:57 被阅读0次
import axios from 'axios'
// import router from 'src/router'
// import store from 'store'
import { BASE_URL } from '../api'


export default function fetch(url='', data={}, method='get') {

  method = method.toLowerCase();

  let ops = {params: data};
  if(method === 'post'){

    ops = {data: data};

    // axios默认content-type是application/json 若要改成application/x-www-form-urlencoded 就放开
    // let pms = new URLSearchParams();
    // for(let d in data){
    //   pms.append(d, data[d]);
    // }
    // ops = {data: pms};
  }
  let options = {
    url,
    ...ops,
    method
  };

  // 返回一个promise对象
  return new Promise((resolve, reject) => {
    const instance = axios.create({ //创建一个axios实例
      // baseURL: BASE_URL, //设置默认根地址
      timeout: 5000, //设置请求超时设置
      withCredentials: true,
      crossDomain:true
    });

    instance(options) //请求处理
      .then(({data}) => {
        // console.log('fetch:',data);
        //请求成功时,根据业务判断状态
        if(data.code === '000'){ //未登录,todo:状态码根据服务端返回修改,如跳登录页
          location.href = `//com/user/login.action?returnurl=${encodeURIComponent(location.href)}`;
        }else if(data.code == 0){
          resolve(data);
          return false
        }
        // console.log('fetch请求数据失败!');
        reject(data)
      })
      .catch((error) => {
        //请求失败时,根据业务判断状态
        if (error.response) {
          // let resError = error.response
          let resCode = error.status;
          let resMsg = error.message;
          console.log('请求数据失败!');
          reject({code: resCode, returnMessage: resMsg})
        }
      })
  })
}

相关文章

网友评论

      本文标题:axios封装

      本文链接:https://www.haomeiwen.com/subject/crgmvltx.html