axios 拦截器处理通用封装
aioxs 通用封装,比如在登录的时候,若登录给后面接口,多传个token。有助安全性。 对于 异常处理。 拦截器 ,请求前,得到资源后。
aioxs封装
src/config/httpConfig.js
import axios from 'axios'
import store from '@/store/index.js'
import baseURL from './baseUrl'
import { Message } from 'element-ui'
const http = {}
var instance = axios.create({
timeout: 5000,
baseURL
})
// 添加请求拦截器
instance.interceptors.request.use(
function(config) {
// 请求头添加token
if (store.state.UserToken) {
config.headers.Authorization = store.state.UserToken
}
return config
},
function(error) {
return Promise.reject(error)
}
)
// 响应拦截器即异常处理
instance.interceptors.response.use(
response => {
return response.data
},
err => {
if (err && err.response) {
//状态的异常处理
switch (err.response.status) {
case 400:
err.message = '请求出错'
break
case 401:
Message.warning({
message: '授权失败,请重新登录'
})
store.commit('LOGIN_OUT')
setTimeout(() => {
window.location.reload()
}, 1000)
return
case 403:
err.message = '拒绝访问'
break
case 404:
err.message = '请求错误,未找到该资源'
break
case 500:
err.message = '服务器端出错'
break
}
} else {
err.message = '连接服务器失败'
}
Message.error({
message: err.message
})
return Promise.reject(err.response)
}
)
http.get = function(url, options) { // get请求封装
return new Promise((resolve, reject) => {
instance
.get(url, options)
.then(response => {
if (response.code === 0) {
resolve(response.data)
} else {
Message.error({
message: response.message
})
reject(response.message)
}
})
.catch(e => {
console.log(e)
})
})
}
http.post = function(url, data, options) { //post请求封装
return new Promise((resolve, reject) => {
instance
.post(url, data, options)
.then(response => {
if (response.code === 0) {
resolve(response.data)
} else {
Message.error({
message: response.message
})
reject(response.message)
}
})
.catch(e => {
console.log(e)
})
})
}
export default http
baseUrl.js
const baseUrl = 'http://localhost:8080' export default baseUrl
src/store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
import state from './state'
import getters from './getters'
import modules from './modules'
import actions from './actions'
import mutations from './mutations'
Vue.use(Vuex)
export default new Vuex.Store({
state,
getters,
mutations,
actions,
modules
})
项目地址 https://github.com/linrunzheng/vue-permission-control
基于vue, vue-router, vuex进行权限控制
爱生活、爱编程!

浙公网安备 33010602011771号