Vue3 Axios拦截器封装成request文件的示例详解

  1. Vue3 Axios拦截器封装成request文件的示例详解

在Vue3项目中,我们通常会使用Axios来请求数据。为了增强代码的可维护性和重用性,我们可以将Axios的拦截器封装成一个request文件,方便统一管理和调用。下面是示例代码:

request.js

import axios from 'axios';
import { getToken } from '@/utils/auth';

// 创建axios实例
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 5000,
});

// request拦截器
service.interceptors.request.use(
  (config) => {
    // 在发送请求之前做些什么
    if (getToken()) {
      config.headers['Authorization'] = `Bearer ${getToken()}`;
    }
    return config;
  },
  (error) => {
    // 处理请求错误
    console.log(error);
    return Promise.reject(error);
  }
);

// response拦截器
service.interceptors.response.use(
  (response) => {
    // 对响应数据做点什么
    const res = response.data;
    if (res.code !== 20000) {
      console.log('请求异常:', res.message || 'Error');
    } else {
      return res.data;
    }
  },
  (error) => {
    // 处理响应错误
    console.log('请求错误:', error);
    return Promise.reject(error);
  }
);

export default service;

在这个示例中,我们首先import了Axios包和token相关的方法,然后创建了一个axios实例service。接着在这个实例上定义了一个request拦截器和一个response拦截器。在request拦截器中,我们首先判断token是否存在,如果存在则将token添加到请求头中。在response拦截器中,我们对响应数据进行了处理,对于非20000状态码的响应,我们输出了请求异常,并返回一个Promise.reject();对于20000状态码的响应,我们返回了res.data数据。

最后,我们将这个service实例导出,在需要使用Axios的地方只需要import这个文件即可。

使用示例

import request from '@/utils/request';

request({
  url: '/api/user/list',
  method: 'get',
}).then((res) => {
  console.log(res);
});

在使用时,只需要import需要使用的request即可,无需重复代码。

  1. Axios封装文件上传示例

在实际开发中,我们可能需要上传文件,这涉及到FormData的使用。同样,我们可以将Axios的封装和文件上传封装成一个方法,这样方便复用,提高代码的可维护性。下面是示例代码:

utils.js

import request from '@/utils/request';

/**
 * 上传文件
 * @param {FormData} file
 */
export function uploadFile(file) {
  const formData = new FormData();
  formData.append('file', file);
  return request({
    url: '/api/upload/file',
    method: 'post',
    data: formData,
  });
}

在这个示例中,我们首先import了Axios封装,然后定义了一个uploadFile方法。在该方法中,我们创建了一个FormData对象,并向其中添加文件。然后我们使用request方法来发送post请求,并将FormData作为data参数传入。

使用示例

import { uploadFile } from '@/utils/utils';

const file = document.querySelector('input[type="file"]').files[0];
uploadFile(file).then((res) => {
  console.log(res);
});

在使用时,只需要import需要使用的方法即可,无需重复代码。同时,也可以将这个方法进一步封装,比如添加上传进度等功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue3 Axios拦截器封装成request文件的示例详解 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue项目部署后提示刷新版本的实现代码

    当我们部署 Vue 项目时,通常情况下,部署完成后用户需要手动刷新页面才能加载最新版本。为了提供更好的用户体验,我们可以使用一些方法来实现自动刷新页面的功能。以下是一些实现方法的示例说明。 方法一:添加版本号 第一种方法是通过添加版本号到静态资源文件来实现自动刷新页面。具体实现步骤如下: 在 Vue 项目中的 index.html 文件中添加版本号到静态资源…

    Vue 2023年5月28日
    00
  • vue如何在style标签中使用变量(数据)详解

    下面是“vue如何在style标签中使用变量(数据)详解”的完整攻略: 1. 介绍 Vue提供了一个非常方便的方法,允许您在模板中和js代码中使用变量,但是在style标签中使用变量比较麻烦。通常情况下,我们可以使用CSS预处理器来处理这个问题,比如Sass或者Less。不过Vue还提供了其他办法,来让我们方便地在style标签中使用变量,下面将详细介绍。 …

    Vue 2023年5月27日
    00
  • Vue常用的几个指令附完整案例

    下面是讲解Vue常用的几个指令的攻略: 一、v-bind指令 v-bind指令可以动态绑定HTML元素的属性,例如动态指定元素的class、style、src等。其语法格式为v-bind:属性名=”属性值”,或者简写为:属性名=”属性值”。 示例一: 假设我们有一个用户名字的数据变量,需要将它实时地绑定到HTML元素的title属性里面,可以这样使用v-bi…

    Vue 2023年5月28日
    00
  • Vue中$set()的使用方法场景分析

    我来为您详细讲解“Vue中$set()的使用方法场景分析”。 什么是Vue中的$set()? 在Vue中使用双向绑定时,当我们修改数据时,Vue会自动更新页面中的数据,这个过程是响应式的过程。但是,有时候我们需要修改由于JavaScript对象的限制而不能随意添加或修改的数据,例如数组或者对象。这时,我们需要使用Vue提供的$set()方法来触发响应式更新。…

    Vue 2023年5月29日
    00
  • vue实现图片路径转二进制文件流(binary)

    下面是详细的攻略: 如何实现图片路径转换为二进制文件流(binary)? 将图片路径转化为二进制文件流的过程,包括三个步骤:获取图片,读取图片文件二进制,将二进制数据存储起来。下面是具体步骤。 获取图片 获取图片通常需要从 input[type=file] 元素或一个图片 URL。对于 input[type=file] 元素,可通过 onchange 事件获…

    Vue 2023年5月27日
    00
  • vue 2.0项目中如何引入element-ui详解

    当我们想利用 Element UI 搭建 Vue 2.0 项目时,首先需要引入 Element UI。下面就是详细的操作步骤: 一、安装 Element UI Element UI 是一个基于 Vue.js 的桌面端组件库,提供了众多酷炫的组件,且使用方便。我们可以通过 npm 来进行安装 Element UI。 在命令行中执行以下命令: npm i ele…

    Vue 2023年5月28日
    00
  • 前端vue a链接下载文件失败的问题(未发现文件)

    针对vue前端下载文件失败的问题,常见的原因有以下几种: 后端没有处理下载请求的接口,或者接口存在问题; 前端对于下载请求的处理未能正确执行。 针对第一种情况,需要检查后端是否提供对应的下载接口,并且接口返回的文件地址是否正确。可以通过postman等工具模拟请求该接口,检查返回的数据是否符合预期。 针对前端对于下载请求的处理问题,常见的一种错误是只处理了应…

    Vue 2023年5月28日
    00
  • 深入理解Vuex的作用

    深入理解Vuex的作用 什么是Vuex? Vuex 是一个专门为 Vue.js 设计的状态管理库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 在一个典型的 Vue 应用中,组件之间的通信是通过 props 和事件进行的,这样简单的场景并没有问题,但是在大型的应用中,状态的管理会变得非常复杂。每一个子组件都需要…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部