在vue项目中,每次和后台交互的时候,经常用到的就是axios请求数据,它是基于promise的http库,可运行在浏览器端和node.js中。当项目越来越大的时候,接口的请求也会越来越多,怎么去管理这些接口?多人合作怎么处理?只有合理的规划,才能方便往后的维护以及修改,

安装
安装axios依赖包
cnpm install axios --save
引入
一般会我会在项目src中新建一个untils目录,其中base用于管理接口域名,http处理请求拦截和响应拦截,user.js负责接口文件(接口文件可以自己新建一个文件夹,然后放对应的接口文件)
1.在http.js文件中,用于处理axios中对请求拦截和响应拦截做处理,token处理,并引入element-ui加载动画。
import axios from 'axios'
import { Loading, Message } from 'element-ui'
import router from '../router/index.js'
let loading
function startLoading() {
loading = Loading.service({
lock: true,
text: '加载中....',
background: 'rgba(0, 0, 0, 0.7)'
})
}
function endLoading() {
loading.close()
}
// 请求拦截
axios.interceptors.request.use(
(confing) => {
startLoading()
//设置请求头
if (localStorage.eToken) {
confing.headers.Authorization = localStorage.eToken
}
return confing
},
(error) => {
return Promise.reject(error)
}
)
//响应拦截
axios.interceptors.response.use(
(response) => {
endLoading()
return response
},
(error) => {
Message.error(error.response.data)
endLoading()
// 获取状态码
const { status } = error.response
if (status === 401) {
Message.error('请重新登录')
//清楚token
localStorage.removeItem('eToken')
//跳转到登录页面
router.push('/login')
}
return Promise.reject(error)
}
)
export default axios