vue中封装axios
首先在src目录下新建一个文件夹,在文件夹里新建一个js文件,我新建的文件夹名称为api,js名称为api.js,代码如下:
import axios from 'axios'; import { Message } from 'element-ui'; axios.defaults.timeout = 5000; axios.defaults.baseURL ='这里是你的请求地址'; //http request 拦截器 axios.interceptors.request.use( config => { // const token = getCookie('名称');注意使用的时候需要引入cookie方法,推荐js-cookie config.data = JSON.stringify(config.data); config.headers.Authorization = 'JWT '+window.sessionStorage.getItem('token') // 这里需要注意,必须return config才能生效 // return config // config.headers = { // 'Content-Type':'application/x-www-form-urlencoded' // } // if(token){ // config.params = {'token':token} // } return config; }, error => { return Promise.reject(err); } ); //http response 拦截器 axios.interceptors.response.use( response => { if(response.data.errCode ==2){ router.push({ path:"/login", query:{redirect:router.currentRoute.fullPath}//从哪个页面跳转 }) } return response; }, error => { return Promise.reject(error) } ) /** * 封装get方法 * @param url * @param data * @returns {Promise} */ export function get(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,data = {}){ return new Promise((resolve,reject) => { axios.post(url,data) .then(response => { resolve(response.data); },err => { reject(err) }) }) } /** * 封装patch请求 * @param url * @param data * @returns {Promise} */ export function patch(url,data = {}){ return new Promise((resolve,reject) => { axios.patch(url,data) .then(response => { resolve(response.data); },err => { reject(err) }) }) } /** * 封装put请求 * @param url * @param data * @returns {Promise} */ export function put(url,data = {}){ return new Promise((resolve,reject) => { axios.put(url,data) .then(response => { resolve(response.data); },err => { reject(err) }) }) } /** * 封装delete请求 * @param url * @param data * @returns {Promise} */ export function del(url, data = {}){ return new Promise((resolve,reject) => { axios.delete(url,data) .then(response => { resolve(response.data); },err => { reject(err) }) }) }
然后在main.js里面引入:
import {post,get,patch,put,del} from './api/api';
//定义全局变量
Vue.prototype.$post=post;
Vue.prototype.$get=get;
Vue.prototype.$patch=patch;
Vue.prototype.$put=put;
Vue.prototype.$del=del;
然后在相应的接口引入就可以啦:
initTable(){ this.$get('/car/list', { district_id:this.district_id, police_id:this.police_id, uptown_id:this.uptown_id, plate:this.formInline.plate, page:this.page }).then(function(res) { console.log('111111111111111',res); }).catch(function(error) { console.log(error); }); },
                    
                
                
            
        
浙公网安备 33010602011771号