Vue项目 封装 axios请求 (直接复制可用)

Vue项目axios请求封装实践
本文介绍了如何在Vue项目中封装axios请求。首先通过安装axios,然后在src目录下创建request文件来配置请求头和拦截器。接着,将接口封装到api文件夹中,方便管理和调用。最后,说明了如何在项目文件中引入并使用这些封装好的接口。

首先先在你的项目中安装 axios 官方文档

$ npm install axios

安装完成之后可以在 package.json 文件中看到
在这里插入图片描述
然后在项目 src 文件夹下创建一个文件来进行请求的封装
在这里插入图片描述
然后 request 文件是对 axios 的处理 ,里面包含 请求头的配置 以及请求拦截和响应拦截相关的一些配置,api 文件夹主要就是 对接口的封装。项目中用到的接口 都可以写到这里面

1. 先看 request 文件

在这里插入图片描述

// 这是一个封装请求接口的文件
import axios from 'axios' //将安装好的axios引入进来

// 创建一个axios请求实例   详细请看axios官网文档  https://www.axios-http.cn/docs/instance
//这里可以配置公共的请求头   超时时间等
const instance = axios.create({
   
   
    baseURL: 'https://www.xxxxxxxx.com', //这里写自己公司的请求接口
    timeout: 5000, //请求超时时间
### Vue2 中封装 Axios 请求 为了简化 HTTP 请求操作,在 Vue2 项目中可以对 `axios` 进行封装,从而减少重复代码量并集中管理请求配置。以下是具体实现方法: #### 创建 Axios 实例 首先,在项目的合适位置(如 `/utils/axios.js` 文件),创建一个新的 JavaScript 文件来初始化和配置 `axios` 实例。 ```javascript // /utils/axios.js import axios from 'axios'; const instance = axios.create({ baseURL: process.env.VUE_APP_API_URL || '/api', // 设置基础URL timeout: 5000, // 超时时间 }); export default instance; ``` 此部分定义了一个全局可用的基础 URL 和超时时长,并将其导出以便其他地方使用[^1]。 #### 添加拦截器 接着在同一文件内添加请求与响应拦截器,用来处理每次请求之前以及接收到服务器回应之后的操作。 ```javascript instance.interceptors.request.use( config => { const token = localStorage.getItem('token'); if (token) { config.headers['Authorization'] = `Bearer ${token}`; } return config; }, error => Promise.reject(error) ); instance.interceptors.response.use( response => response.data, error => { console.error(`Error occurred during API call:`, error); throw new Error(error.message); } ); ``` 这里通过检查本地存储中的令牌来进行身份验证授权,并且当遇到错误时会打印日志信息给开发者查看[^2]。 #### 定义通用请求函数 随后可以在同一目录下新建一个名为 `http.js` 或者类似的文件,用于声明一些常用的 HTTP 方法,比如 GET、POST 等等。 ```javascript // /utils/http.js import axiosInstance from './axios'; function get(url, params={}) { return axiosInstance.get(url, {params}); } async function postJson(url, data={}, options={}) { try { let res = await axiosInstance.post(url, data, {...options}) return res; } catch(e){ throw e; } } export {get, postJson}; ``` 这些辅助函数可以帮助进一步抽象化网络通信逻辑,使得业务层只需要关心实际的数据交互而不必关注底层细节[^3]。 #### 组件内的应用实例 最后,在任何需要发起网络请求的地方引入上面提到的服务即可轻松调用相应的方法。 ```html <!-- MyComponent.vue --> <template> <!-- Your template code here --> </template> <script> import {postJson} from '../utils/http'; export default { name: "MyComponent", methods: { async login() { try{ let result = await postJson("/login", {"username":"admin","password":"secret"}); alert(JSON.stringify(result)); }catch(err){ alert("Login failed"); } } } } </script> ``` 这样就完成了整个流程的设计——从创建自定义的 `axios` 实例到编写便捷工具函数再到最终的应用场景展示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值