-
首先在 api 文件里面创建文件
axio.jsimport axios from 'axios' // 首先引入 axios import { Message } from 'element-ui' const service = axios.create({ baseURL: window.PLATFROM_CONFIG.tokenUrl, // 请求地址 timeout: 60000, // 请求超时时间 method: 'post' // 请求方式 }) service.interceptors.request.use( // 请求拦截器 config => { let token = localStorage.getItem('token'); if (U.notEmpty(token)) { // 如果有 token 为请求头添加 token config.headers['Authorization'] = "Bearer " + token; } return config }, error => { // 错误处理 return Promise.reject(error) } ) service.interceptors.response.use( // 响应拦截器 response=>{ console.log('response =>',response) if(response.data.returnCode !== 1) { // 判断返回的code码做处理 localStorage.removeItem("token"); window.location.href = window.PLATFROM_CONFIG.ssoUrl + "/login?service=" + encodeURI(window.PLATFROM_CONFIG.heoUrl); } return response.data // return 返回的值 }, error=>{ // 错误处理 Message({ message: error.message, type: 'error', duration: 2000 }) return Promise.reject(error) } ) export default service
-
然后在 mian.js 中挂载
import request from '@/api/axio' // 引入刚刚封装的拦截器 const api = Vue => { // 封装 Object.defineProperties(Vue.prototype, { $api: { get() { return { post2: async (url) => { return new Promise((resolve, reject) => { requestToken({url, method: 'post'}).then(res => { U.unloading(); // 加载状态 return resolve(res); // 返回结果 }).catch(err => { U.unloading(); reject(err) // 抛出错误 }) }) } } } } }) } Vue.use(api) // 挂载
-
使用
this.$api.post2('/xx/xxx').then(res => { }).catch(err => {}) // ----或者------ async doLogin() { try { const res = await this.$api.post2('/xx/xxx') } catch (error) { } },
封装 axios 方法
最新推荐文章于 2024-01-01 07:31:44 发布