当前位置:实例文章 » HTML/CSS实例» [文章]Vue3 axios数据请求封装

Vue3 axios数据请求封装

发布人:shili8 发布时间:2025-03-08 06:22 阅读次数:0

**Vue3 Axios 数据请求封装**

在 Vue3 中,Axios 是一个非常流行的 HTTP 请求库。然而,直接使用 Axios 的话,我们需要每次都手动创建一个实例,并且需要传递配置参数,这样会导致代码冗余和难以维护。

因此,在本文中,我们将学习如何封装 Axios,实现更高效、易于维护的数据请求功能。

### **1. 创建 axios 实例**

首先,我们需要创建一个 Axios 的实例。我们可以在 `main.js` 文件中创建一个全局的 Axios 实例。

javascriptimport axios from 'axios';

const instance = axios.create({
 // 基础 URL baseURL: process.env.VUE_APP_API_URL,
 // 请求头 headers: {
 'Content-Type': 'application/json',
 },
 // 超时时间(毫秒)
 timeout:10000,
});

在上面的代码中,我们创建了一个 Axios 实例,并设置了基础 URL、请求头和超时时间。

### **2. 封装 axios 请求函数**

接下来,我们需要封装一些常用的 axios 请求函数。例如,`get()`, `post()`, `put()` 和 `delete()` 等。
javascript// get 请求export function get(url, params = {}) {
 return instance.get(url, { params });
}

// post 请求export function post(url, data = {}, config = {}) {
 return instance.post(url, data, config);
}

// put 请求export function put(url, data = {}, config = {}) {
 return instance.put(url, data, config);
}

// delete 请求export function del(url, params = {}) {
 return instance.delete(url, { params });
}

在上面的代码中,我们封装了四个常用的 axios 请求函数:`get()`, `post()`, `put()` 和 `delete()`。

### **3. 使用封装的 axios 请求函数**

最后,我们可以使用这些封装好的 axios 请求函数来发起请求。
javascript// get 请求示例import { get } from './axios';

const res = await get('/api/data');
console.log(res.data);

// post 请求示例import { post } from './axios';

const data = { name: 'John', age:30 };
const res = await post('/api/create', data);
console.log(res.data);

在上面的代码中,我们使用了封装好的 axios 请求函数来发起请求。

### **4. 错误处理**

最后,我们需要处理错误。我们可以在 `axios` 实例中设置一个错误拦截器。
javascriptinstance.interceptors.push({
 responseError: (error) => {
 // 处理错误 console.error(error);
 return Promise.reject(error);
 },
});

在上面的代码中,我们设置了一个错误拦截器,用于处理 axios 请求时的错误。

### **5. 总结**

通过本文的学习,我们可以实现 Vue3 Axios 数据请求封装。我们可以使用封装好的 axios 请求函数来发起请求,并且可以轻松地处理错误。

**完整代码示例**
javascript// main.jsimport axios from 'axios';

const instance = axios.create({
 baseURL: process.env.VUE_APP_API_URL,
 headers: {
 'Content-Type': 'application/json',
 },
 timeout:10000,
});

instance.interceptors.push({
 responseError: (error) => {
 console.error(error);
 return Promise.reject(error);
 },
});

export function get(url, params = {}) {
 return instance.get(url, { params });
}

export function post(url, data = {}, config = {}) {
 return instance.post(url, data, config);
}

export function put(url, data = {}, config = {}) {
 return instance.put(url, data, config);
}

export function del(url, params = {}) {
 return instance.delete(url, { params });
}


javascript// axios.jsimport { get } from './main';

const res = await get('/api/data');
console.log(res.data);

const data = { name: 'John', age:30 };
const res = await post('/api/create', data);
console.log(res.data);

**注释**

* `axios.create()`:创建一个 axios 实例。
* `instance.interceptors.push()`:设置一个错误拦截器。
* `get()`, `post()`, `put()` 和 `delete()`:封装好的 axios 请求函数。
* `Promise.reject(error)`:返回一个 rejected 的 promise,用于处理错误。

相关标签:vueaxios
其他信息

其他资源

Top