haizlin / fe-interview

前端面试每日 3+1,以面试题来驱动学习,提倡每日学习与思考,每天进步一点!每天早上5点纯手工发布面试题(死磕自己,愉悦大家),6000+道前端面试题全面覆盖,HTML/CSS/JavaScript/Vue/React/Nodejs/TypeScript/ECMAScritpt/Webpack/Jquery/小程序/软技能……
http://www.h-camel.com
MIT License
25.5k stars 3.26k forks source link

[vue] 你有封装过axios吗?主要是封装哪方面的? #303

Open haizhilin2013 opened 5 years ago

haizhilin2013 commented 5 years ago

[vue] 你有封装过axios吗?主要是封装哪方面的?

zhixiaotong commented 5 years ago

统一上下文请求路径、统一超时时间、统一错误处理和拦截发送请求用于添加token

luuman commented 5 years ago

封装处理配置(路径、时间、token)、统一管理接口、错误处理、不同形式的请求、消息提示、loading等。

crush2020 commented 3 years ago

用Promise在封装一次axios,并统一baseURL,超时时间,请求拦截,响应拦截处理,统一管理接口,批量导出。

Cai-zhiji commented 1 year ago

如何封装axios

  1. 创建模块 在项目中创建一个axios.js文件,然后在该文件中引入Axios,并配置全局的默认请求选项。
    
    // axios.js
    import axios from 'axios';

// 设置默认请求配置 axios.defaults.baseURL = 'http://api.example.com';

export default axios;

在需要使用Axios的地方,可以直接引入axios.js文件并使用它发送请求。

import axios from './axios';

axios.get('/api/user') .then(response => { console.log(response.data); }) .catch(error => { console.error(error); });

2. 创建插件
创建一个名为axiosPlugin.js的插件文件,使用Vue的插件机制来封装Axios。

// axiosPlugin.js import axios from 'axios';

const axiosPlugin = { install(Vue) { Vue.prototype.$axios = axios; } };

export default axiosPlugin;

在Vue应用的入口文件中,通过Vue.use()方法安装插件。

import Vue from 'vue'; import axiosPlugin from './axiosPlugin';

Vue.use(axiosPlugin);

new Vue({ // ... }).$mount('#app');

然后,在组件中就可以通过this.$axios来使用Axios发送请求。

export default { mounted() { this.$axios.get('/api/user') .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); } }


通过以上方式,可以在Vue中封装Axios,使其在项目中更方便地使用。在模块化的方式中,直接引入axios.js文件即可使用Axios,而在插件方式中,则可以通过this.$axios在Vue实例和组件中使用Axios。