1.安装:
进入到工程根目录下,然后 运行命令安装:
npm i axios -S
2.在src/util/request.js:
import axios from 'axios' //导入
const request = axios.create({ //创建一个request对象
baseURL: '/api', // 注意!! 这里是全局统一加上了 '/api' 前缀,也就是说所有接口都会加上'/api'前缀在,页面里面写接口的时候就不要加 '/api'了,否则会出现2个'/api',类似 '/api/api/user'这样的报错,切记!!!
timeout: 5000
})
//请求拦截器,在往后台发送数据前做一些处理
// request 拦截器
// 可以自请求发送前对请求做一些处理
// 比如统一加token,对请求参数统一加密
request.interceptors.request.use(config => {
config.headers['Content-Type'] = 'application/json;charset=utf-8';
// config.headers['token'] = user.token; // 设置请求头
return config
}, error => {
return Promise.reject(error)
});
//响应拦截器,设置从后台请求一些数据后,对其进行处理
// response 拦截器
// 可以在接口响应后统一处理结果
request.interceptors.response.use(
response => {
let res = response.data;
// 如果是返回的文件
if (response.config.responseType === 'blob') { //如果时文件的话,直接返回
return res
}
// 兼容服务端返回的字符串数据
if (typeof res === 'string') { //如果是string的话,会进行JSON.parse,把json字符串变为json对象
res = res ? JSON.parse(res) : res
}
return res;
},
error => { //如果出现error,就打印一个error的日志
console.log('err' + error) // for debug
return Promise.reject(error)
}
)
export default request //最后将请求导出来
//1.先创建,再对发出的请求做处理,再对收到的响应做处理,最后将其导出
3.在main.js中使用:
加入代码:
import request from "./util/request"; //1、导入 Vue.prototype.request=request //2.使用
加入后main.js代码:
import Vue from 'vue' import App from './App.vue' import router from './router' import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; import './assets/gloable.css' // import 'amfe-flexible'; import 'lib-flexible/flexible' import request from "./util/request"; //1、导入 Vue.config.productionTip = false Vue.use(ElementUI, {size:"mini"}); //{size:"mini"}设置控件大小 Vue.prototype.request=request //2.使用 new Vue({ router, render: h => h(App) }).$mount('#app')
4.在Home.vue中使用:
使用代码:
加入后的Home.vue代码: