axios封装

104 阅读1分钟

` import axios from 'axios' import qs from 'qs' import merge from 'merge' import utils from '@/utils' import {Message} from 'element-ui' import {Encrypt} from '@/plugins' import router from '@router'

const http=axios.create({ baseURL:window.TAG_CONFIG['baseurl'], timeout:1000*60, withCredentials:false, headers:{ 'Content-Type':'application/json;charset=utf-8', }, paramsSerializer:function(params){ return qs.stringify(params,{allowDots:true,indices:!!params.d}) }

}) /**

  • 请求拦截 */ http.interceptors.request.use((config)=>{ if(window.sessionStorage.getItem('token')){ config.headers['auth-token']=window.sessionStorage.getItem('token') http.setheaders={'auth-token':window.sessionStorage.getItem('token')} } return config },(error)=>{ return Promise.reject(error) })

/**

  • 响应拦截器 */ // 3.响应拦截器 http.interceptors.response.use(response => { //接收到响应数据并成功后的一些共有的处理,关闭loading等

    return response }, error => { /***** 接收到异常响应的处理开始 *****/ if (error && error.response) { // 1.公共错误处理 // 2.根据响应码具体处理 switch (error.response.status) { case 400: error.message = '错误请求' break; case 401: error.message = '未授权,请重新登录' break; case 403: error.message = '拒绝访问' break; case 404: error.message = '请求错误,未找到该资源' window.location.href = "/NotFound" break; case 405: error.message = '请求方法未允许' break; case 408: error.message = '请求超时' break; case 500: error.message = '服务器端出错' break; case 501: error.message = '网络未实现' break; case 502: error.message = '网络错误' break; case 503: error.message = '服务不可用' break; case 504: error.message = '网络超时' break; case 505: error.message = 'http版本不支持该请求' break; default: error.message = 连接错误${error.response.status} } } else { // 超时处理 if (JSON.stringify(error).includes('timeout')) { Message.error('服务器响应超时,请刷新当前页') } error.message = '连接服务器失败' }

    Message.error(error.message) /***** 处理结束 ***/ //如果不需要错误处理,以上的处理过程都可省略 return Promise.reject(error.response) }) /

    • 请求参数处理get / http.setParams=(params={},paramss={},openDefultParams=true,contentType='json',sign={})=>{ var defaults={ t:new Date().getTime(), } paramss=merge(defaults,params) let par='' Object.keys(paramss).map((j)=>{ par=${par}&${j}=${paramss[j]} return j }) sign={sign:Encrypt(par.substr(1)).subsrting(0,15)} return openDefultParams?merge(defaults,paramss,sign):merge(paramss,sign) } /*
    • 请求参数处理post / http.setData=(data={},datas={},openDefultdata=true,contentType='json',sign={})=>{ var defaults={ t:new Date().getTime(), } datas=merge(defaults,data) sign={sign:Encrypt(JSON.stringify(datas)).subsrting(0,15)} return contentType==='json'?JSON.stringify(data):qs(JSON.stringify(data)) } /*
    • setForm */ http.setForm=(data={},datas={},form={})=>{ var formData=new formData() formData.append('t',new Date().getTime()) var defaults={ t:new Date().getTime(), } datas=merge(defaults,data) formData.append('sign',Encrypt(JSON.stringify(datas)).subsrting(0,15)) formData.append('file',form) return formData }

http.setForm=(data={},datas={},form={})=>{ var formData=new formData() formData.append('t',new Date().getTime()) var defaults={ t:new Date().getTime(), } datas=merge(defaults,data) formData.append('sign',Encrypt(JSON.stringify(datas)).subsrting(0,15)) let list=Object.keys(form) list.map((item)=>{ formData.append(item,form[item]) }) return formData }

export default http `