基于vue组件,封装axios请求拦截
- 新建一个自己的公共的js文件 如:commTools.js
import axios from 'axios'
export const mixin = {
data(){
return {
source: '',
}
},
methods: {
/**
* get 请求
* @param url 请求地址
* @param params 请求的参数
* @returns {Promise<any>}
*/
httpGet(url, params) {
if(this.source) this.source.cancel()
this.source = axios.CancelToken.source();
return new Promise((resolve, reject) => {
axios.get(url, {
params: params,
cancelToken: this.source.token
}).then(res => {
resolve(res.data)
}).catch(err => {
reject(err)
})
})
},
/**
* post 请求
* @param url 请求地址
* @param params 请求的参数
* @returns {Promise<any>}
*/
httpPost(url, params){
if(this.source) this.source.cancel()
this.source = axios.CancelToken.source();
return new Promise((resolve, reject) => {
axios.post(url,
params,
{
cancelToken: this.source.token
})
.then(res => {
resolve(res.data)
}).catch(err => {
reject(err)
})
})
}
}
}
import { mixin } from "./../../assets/js/commTools"
mixins: [mixin]
- 接下来就是在 methdos 中正常使用该方法就行了
let url = '请求地址'
let params = {
name: 'xxx',
}
this.httpPost(url, params).then(res => {
console.log('得到的结果:'+ res)
})