vue中axios的封装

本文介绍了在Vue项目中为什么要对axios进行封装,强调了封装可以减少冗余代码并统一管理请求。同时,详细说明了axios的安装步骤,并概述了封装axios的基本流程,包括在src目录创建request文件夹,以及在其中的http.js和api.js文件中分别封装axios和管理接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么要对axios进行封装

  • 在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promisehttp库,可运行在浏览器端和node.js中。axios有很多优秀的特性,例如拦截请求和响应、取消请求、转换json、客户端防御XSRF等。
  • 在一个完整的项目中,和服务端的交互会很频繁,一个项目会有很多请求,冗余代码很多。所以将请求封装,统一管理还是很有必要的。
  • axios的封装主要目的就是在帮助我们简化项目代码和利于后期的更新维护

axios的安装

npm install axios; // 安装axios

axios的封装

  • 一般在项目的src目录中会新建一个request文件夹,然后在里面新建一个http.js和一个api.js文件。http.js文件用来封装axios,而api.js用来统一管理接口。

代码示例:

import axios from 'axios'  // 引入axios
import route from '../router/index' 
const http = axios.create({
    baseURL: 'http://39.100.7.70:81/', // 统一的URL路径
    timeout: 5000  // 设置默认的请求超时时间
})

// 请求拦截器
request.interceptors.request.use(config => {
    return config;
}, error => {
    return Promise.reject(error);
});
// 响应拦截器
request.interceptors.response.use(response => {
    return response;
}, error => {
    route.push('/myerror')
    return Promise.reject(error);
});

export default http  // 导出 http
Vue 项目中,Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 node.js 环境。它非常适合与 Vue.js 搭配使用,因为它们都是基于 Promise 的。封装 Axios 的主要目的是为了简化 HTTP 请求的代码,提高代码的复用性,同时可以统一处理请求和响应的拦截。 以下是一个简单的 Axios 封装示例: 1. 安装 Axios: ``` npm install axios ``` 2. 创建一个 `request.js` 文件来进行 Axios封装: ```javascript import axios from 'axios'; // 创建axios实例 const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // api的base_url timeout: 5000 // 请求超时时间 }); // 请求拦截器 service.interceptors.request.use( config => { // 在发送请求之前做些什么 // 例如设置token const token = localStorage.getItem('token'); if (token) { config.headers['Authorization'] = token; } return config; }, error => { // 对请求错误做些什么 console.error(error); // 在控制台输出错误信息 return Promise.reject(error); } ); // 响应拦截器 service.interceptors.response.use( response => { // 对响应数据做点什么 const res = response.data; if (res.code !== 200) { // 根据code码进行相应的业务处理 console.error(res.message); // 在控制台输出错误信息 return Promise.reject(res.message); } else { return res; } }, error => { // 对响应错误做点什么 console.error(error); // 在控制台输出错误信息 return Promise.reject(error); } ); export default service; ``` 3. 在 Vue 组件中使用封装后的 Axios: ```javascript <template> <!-- Your template --> </template> <script> import request from '@/utils/request.js'; export default { name: 'YourComponent', methods: { fetchData() { request({ url: '/your/api/url', method: 'get' }).then(response => { console.log(response); }).catch(error => { console.log(error); }); } }, mounted() { this.fetchData(); } }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值