封装Get和Post请求

复制代码
import axios from 'axios';
import qs from 'qs';
import { VALID_LOGIN } from '../config/url'
import context from '../main.js'
import router from '../router'


axios.defaults.timeout = 20000;
axios.defaults.baseURL = '';
axios.defaults.withCredentials = true;


//http request 拦截器
// axios.interceptors.request.use(
//   config => {
//     // const token = getCookie('名称');注意使用的时候需要引入cookie方法,推荐js-cookie
//     // config.data = JSON.stringify(config.data);
//     // config.data = qs.stringify(config.data)
//     config.headers = {
//       // "Content-Type":"application/json;charset=utf-8",
//       "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
//     // }
//     // if(token){
//     //   config.params = {'token':token}
//     }
//     return config;
//   },
//   error => {
//     return Promise.reject(err);
//   }
// );

let errorFlags = true;
//http response 拦截器
axios.interceptors.response.use(
  response => {
    // if(response.data.errCode == 2){
    //   router.push({
    //     path:"/login",
    //     querry:{redirect:router.currentRoute.fullPath}//从哪个页面跳转
    //   })
    // }
    return response;
  },
  error => {
    let status = error.response.status
    if (status == 403 || status == 401) {
      if (errorFlag) {
        post(VALID_LOGIN)
          .then(data => {
            if (data.status == 1 || data.status == '1') {
              context.$message({
                type: 'info',
                message: '您没有当前菜单的访问权限,请联系管理员!'
              });
            } else if (data.status == -1 || data.status == '-1') {
              context.$message({
                type: 'error',
                message: '您已掉线,请先登录!'
              });
              localStorage.clear();
              setTimeout(function () {
                selectPlate()
                router.push('/login')
              }, 2000);
            }
          })
          .catch(err => {
            console.log(err)
            context.$message({
              type: 'error',
              message: err.response.data.msg
            });
          })
        errorFlags = false
      }
    }
    return Promise.reject(error)
  }
)






var errorFlag = true;
//没有权限时返回登陆页面
$(document).ajaxComplete(function (evt, req, settings) {
  if (null != req && req != '' && req != undefined) {
    if (req.status == 403 || req.status == 401) {
      if (errorFlag = true) {
        post(VALID_LOGIN)
          .then(data => {
            if (data.status == 1 || data.status == '1') {
              context.$message({
                type: 'info',
                message: '您没有当前菜单的访问权限,请联系管理员!'
              });
            } else if (data.status == -1 || data.status == '-1') {

              context.$message({
                type: 'error',
                message: '您已掉线,请先登录!'
              });
              localStorage.clear();
              setTimeout(function () {
                selectPlate()
                router.push('/login')
              }, 2000);

            }
          })
          .catch(err => {
            console.log(err)
            context.$message({
              type: 'error',
              message: err.response.data.msg
            });
          })

        errorFlag = false;
      } else { }
    }
  }
});



//退出到首页
function selectPlate() {
  let a = document.createElement('a')
  a.href = location.protocol + '//' + location.host
  // a.click()
  window.location.href = location.protocol + '//' + location.host;
  const dom = window.parent.document.getElementsByClassName("menuContainer");
  const dom1 = window.parent.document.getElementsByClassName("topContainer");
  const dom2 = window.parent.document.getElementsByClassName("tabsBox");
  $(dom).css("display", "none");
  $(dom1).css("display", "none");
  $(dom2).css("display", "none");
}
/**
 * 封装get方法
 * @param url
 * @param data
 * @returns {Promise}
 */

export function fetch(url, params = {}) {
  return new Promise((resolve, reject) => {
    axios.get(url, {
      params: params
    })
      .then(response => {
        resolve(response.data);
      })
      .catch(err => {
        reject(err)
      })
  })
}


/**
 * 封装post请求
 * @param url
 * @param data
 * @returns {Promise}
 */

export function post(url, data = {}) {
  return new Promise((resolve, reject) => {
    axios.post(url,
      qs.stringify(data), {
      headers: {
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
      }
    }
    )
      .then(response => {
        resolve(response.data);
      }, err => {
        reject(err)
      })
  })
}

/**
 * 同步
 * @param {}} url 
 * @param {*} data 
 */
export async function $postSync(url, data = {}) {
  try {
    let res = await axios.post(url, qs.stringify(data), {
      headers: {
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
      }
    });
    console.log('$postAsync 服务端返回的结果是', res);
    return Promise.resolve(res);
  } catch (err) {
    console.log('异常', err)
  }
}

export async function $getSync(url, data = {}) {
  try {
    let res = await axios.get(url, {
      params: data
    });
    console.log('$getAsync 服务端返回的结果是', res);
    return Promise.resolve(res);
  } catch (err) {
    console.log('异常', err)
  }
}

/**
* 封装post请求  json格式
* @param url
* @param data
* @returns {Promise}
*/
export function postjson(url, data = {}) {
  return new Promise((resolve, reject) => {
    axios.post(url, JSON.stringify(data), {
      headers: {
        "Content-Type": "application/json;charset=utf-8"
      }
    })
      .then(response => {
        resolve(response.data);
      }, err => {
        reject(err)
      })
  })
}

/**
* 封装patch请求
* @param url
* @param data
* @returns {Promise}
*/

export function patch(url, data = {}) {
  return new Promise((resolve, reject) => {
    axios.patch(url, data)
      .then(response => {
        resolve(response.data);
      }, err => {
        reject(err)
      })
  })
}

/**
* 封装put请求
* @param url
* @param data
* @returns {Promise}
*/

export function put(url, data = {}) {
  return new Promise((resolve, reject) => {
    axios.put(url, data)
      .then(response => {
        resolve(response.data);
      }, err => {
        reject(err)
      })
  })
}

// 韩新玉

// 封装postToken请求
export function postToken(url, data = {}) {
  let token = document.cookie.split('=')[1]
  return new Promise((resolve, reject) => {
    axios.post(url, qs.stringify(data),{
      headers: {
        "Content-Type": "application/x-www-form-urlencoded",
        'TowattToken': token
      }
    })
      .then(response => {
        resolve(response.data);
      }, err => {
        reject(err)
      })
  })
}
// 封装postTokenJson请求
export function postTokenJson(url, data = {}) {
  let token = document.cookie.split('=')[1]
  return new Promise((resolve, reject) => {
    axios.post(url, JSON.stringify(data),{
      headers: {
        "Content-Type": "application/json;charset=utf-8",
        'TowattToken': token
      }
    })
      .then(response => {
        resolve(response.data);
      }, err => {
        reject(err)
      })
  })
}
复制代码

 

posted @   崛起崛起  阅读(159)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示