在开发vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端和node.js中。它有很多优秀的特性,例如拦截请求和响应、取消请求、转换json、客户端防御XSRF等。
此处根据项目需要对axios进行了二次封装,以便于对接口api进行统一管理,封装的 api文件内容代码如下:
const Axios = require('axios')
const METHODS = {
GET: 'get',
POST: 'post',
PUT: 'put',
DELETE: 'delete'
}
// 响应拦截器处理数据,接口响应状态正常时数据对象会多一层data包含响应数据
Axios.interceptors.response.use(data => {
return data
}, error => {
console.log('响应拦截器事件error', error.response)
return Promise.reject(error.response)
})
// 接口地址 / 请求参数 / 请求方式 / 请求头信息
const request = (url, params = {}, method = METHODS.GET, headers = {}) => {
// 本项目除登录接口外,其它所有接口请求头信息中均需要包含token信息方可访问
let authToken = localStorage.getItem('Auth-Token')
headers['Auth-Token'] = authToken
let options = {
heade