vue axios 封装(一)

vue

封装一:

'use strict'

import axios from 'axios'

import qs from 'qs'

import NProgress from 'nprogress'

import vm from '../main'

axios.interceptors.request.use(config => { //利用拦截器做预处理

// 这里可以加一些动作, 比如来个进度条开始动作,

NProgress.start()

return config

}, error => {

return Promise.reject(error)

})

axios.interceptors.response.use(response => response, error => Promise.resolve(error.response)) // 这里我们把错误信息扶正, 后面就不需要写 catch 了

//处理来自网络或者服务器的错误

function checkStatus(response) {

NProgress.done()

// if (response.status == 666) {

// localStorage.clear();

// this.$router.push('/')

// }

// 如果 http 状态码正常, 则直接返回数据

// 200请求成功 304浏览器缓存

if (response.status === 200 || response.status === 304 || response.status == 400) {

return response

}

if (response.status == 401) {

console.log("token错误");

vm.$router.push("/");

return response

}

// 异常状态下, 把错误信息返回去

// 因为前面我们把错误扶正了, 不然像 404, 500 这样的错误是走不到这里的

return {

data: {

code: -404,

message: response.statusText,

data: response.statusText,

}

}

}

//处理来自程序端的错误,

function checkCode(res) {

// 如果状态 code 异常(这里已经包括网络错误, 服务器错误, 后端抛出的错误), 可以弹出一个错误提示, 告诉用户

if ((res.data.code || res.data.Code) && res.data.code !== 1000) {

//登录超时--重新登录

if (res.data.code === 1100) {

//alert("会话过期...,请重新登录...")

vm.$router.push('/')

} else if (res.data.Code === 1500) {

vm.$message.error({

message: res.data.Error,

type: "error"

});

} else {

vm.$message.error({ message: '服务器开小差了,请稍后再试', type: "error" });

}

}

return res;

}

export default {

post(url, data) {

const token = JSON.parse(localStorage.getItem("token"))

return axios({

method: 'post', //请求协议

url, //请求地址

data: qs.stringify(data), //请求的数据

timeout: 60000, //超时时间---单位是毫秒

headers: {

'Authorization': token ? token.token_type + ' ' + token.access_token : '',

'X-Requested-With': 'XMLHttpRequest',

'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',

'AJAX_FLAG': ' TRUE'

} //请求头

}).then(checkStatus).then(checkCode)

},

postList(url, data) {

const token = JSON.parse(localStorage.getItem("token"));

return axios({

method: 'post', //请求协议

url, //请求地址

data: data, //请求的数据

timeout: 60000, //超时时间---单位是毫秒

headers: {

'Authorization': token ? token.token_type + ' ' + token.access_token : '',

'X-Requested-With': 'XMLHttpRequest',

// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',

'AJAX_FLAG': ' TRUE'

} //请求头

}).then(checkStatus).then(checkCode)

},

get(url, params) {

const token = JSON.parse(localStorage.getItem("token"));

return axios({

method: 'get', //请求协议

url, //请求地址

params, //请求的数据

timeout: 60000, //超时时间---单位是毫秒

headers: {

'Authorization': token ? token.token_type + ' ' + token.access_token : '',

'X-Requested-With': 'XMLHttpRequest',

'AJAX_FLAG': ' TRUE'

} //请求头

}).then(checkStatus).then(checkCode)

},

delete(url, params) {

const token = JSON.parse(localStorage.getItem("token"));

return axios({

method: 'delete', //请求协议

url, //请求地址

params, //请求的数据

timeout: 60000, //超时时间---单位是毫秒

headers: {

'Authorization': token ? token.token_type + ' ' + token.access_token : '',

'X-Requested-With': 'XMLHttpRequest',

'AJAX_FLAG': ' TRUE'

} //请求头

}).then(checkStatus).then(checkCode)

},

put(url, data) {

const token = JSON.parse(localStorage.getItem("token"))

return axios({

method: 'put', //请求协议

url, //请求地址

data: qs.stringify(data), //请求的数据

timeout: 60000, //超时时间---单位是毫秒

headers: {

'Authorization': token ? token.token_type + ' ' + token.access_token : '',

'X-Requested-With': 'XMLHttpRequest',

'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',

'AJAX_FLAG': ' TRUE'

} //请求头

}).then(checkStatus).then(checkCode)

},

putList(url, data) {

const token = JSON.parse(localStorage.getItem("token"))

return axios({

method: 'put', //请求协议

url, //请求地址

data: data, //请求的数据

timeout: 60000, //超时时间---单位是毫秒

headers: {

'Authorization': token ? token.token_type + ' ' + token.access_token : '',

'X-Requested-With': 'XMLHttpRequest',

// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',

'AJAX_FLAG': ' TRUE'

} //请求头

}).then(checkStatus).then(checkCode)

},

}

以上是 vue axios 封装(一) 的全部内容, 来源链接: utcz.com/z/378337.html

回到顶部