用的vue-cli
import axios from 'axios'
import QS from 'qs';
axios.defaults.timeout = 5000;
axios.defaults.headers.post['Content-Type'] = 'application/json';
axios.defaults.baseURL ='http://地址';
// request拦截器
axios.instance.interceptors.request.use(
config => {
console.log(config)
return config
},
error => {
return Promise.reject(error);
}
)
// respone拦截器
axios.instance.interceptors.response.use(
response => {
const resp = response.data
if (response.status === 200) {
return resp
}
return resp
},
error => {
console.log('err' + error)
return Promise.reject(error)
}
)
/**
- 封装get方法
- @param url
- @param data
- @returns {Promise}
*/
export function fetch(url,params={}){
return new Promise((resolve,reject) => {
axios.get(url,{
params:params
})
.then(response => {
resolve(response.data);
})
.catch(err => {
reject(err)
})
})
}
/**
- 封装post请求
- @param url
- @param data
- @returns {Promise}
*/
export function post(url, params) {
return new Promise((resolve, reject) => {
axios.post(url, QS.stringify(params))
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err.data)
})
});
}
然后在 main.js里
import { post,fetch } from './api/http.js'
//定义全局变量
Vue.prototype.$post=post;
Vue.prototype.$fetch=fetch;
就报错Cannot read property 'interceptors' of undefined
为啥呀 顺便问问 大佬 封装的时候 这个@param 是什么意思 谢谢
把
axios.instance
全改为axios
@param
是注解,可以无视,除非有代码规范限制。