Vue使用——axios封装
背景
- 在前端Vue项目中,需要自定义axios请求拦截器。
配置
- 建立js文件:axiosUtil.js,文件内容如下
import axios from 'axios';
import ElementUI from 'element-ui';
const service = axios.create({ // baseURL: 'https://www.easy-mock.com/mock/test', timeout: 200000 }); // 请求拦截器 service.interceptors.request.use( config => { console.log('config', config) // 在发送请求之前做些什么 return config; }, error => { console.log(error); return Promise.reject(); } ); //响应拦截器 service.interceptors.response.use( response => { console.log(response) const res = response.data // 200是自定义的状态码,根据实际情况定义 if (res.statusCode !== 200) { Message({ message: res.message || 'Error', type: 'error', duration: 5 * 1000 }) /* 此处还可以写一些其他的逻辑处理 */ return Promise.reject(new Error(res.message || 'Error')) } else { return res } }, error => { console.log('err' + error) Message({ message: error.message, type: 'error', duration: 5 * 1000 }) return Promise.reject(error) } ) export default service;
- 封装api,使用axiosUtil.js进行接口封装(举例:farmApi.js)
import axios from 'axios';
import base from './base.js'; import storage from '../utils/storage.js'; import axiosUtil from '../utils/axiosUtil.js';
/** * 增加农场 * @param {*} data * @returns */ function addFarm(data) { return axiosUtil({ method: 'post', url: base.mms + '/farm/save', data: data, headers: {token:storage.get('token')} }) } /** * 删除农场 * @param {*} data * @returns */ function delFarm(data) { return axiosUtil({ method: 'get', url: base.mms + '/farm/delete', params: data, headers: {token:storage.get('token')} }) } export default{ addFarm, delFarm }
- 使用api,进行接口调用
import farmApi from './farmApi.js'; farmApi.addFarm(this.farmObj).then((response) => { var code = response.code; let msg = response.msg; if (200 == code) { console.log("XXXXX"); } else { console.log("XXXXX"); } });