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

yizhihongxing
  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-cli4.0多环境配置变量与模式详解

    下面就为大家详细讲解“vue-cli4.0多环境配置变量与模式详解”的完整攻略。 1. Vue-cli4.0多环境 1.1 什么是多环境? 在Vue开发中,我们会根据不同的环境(开发环境、测试环境、生产环境等)来区分不同的代码逻辑,比如可以使用不同的API服务。因此,我们需要进行多环境的配置。 1.2 多环境配置方法 Vue-cli4.0对于多环境配置提供了…

    Vue 2023年5月28日
    00
  • vue中实现图片压缩 file文件的方法

    现在我将为你详细讲解如何在 Vue 中实现图片压缩的方法。 1. 安装插件 首先,我们需要安装一个非常有用的插件:vue-image-compress。使用此插件,可以轻松地在 Vue 中实现图片压缩功能。 可以使用npm 或 yarn进行安装: npm install vue-image-compress –save 或者 yarn add vue-im…

    Vue 2023年5月28日
    00
  • vue.js实现的幻灯片功能示例

    让我来给你详细讲解“vue.js实现的幻灯片功能示例”的完整攻略。首先,我们需要安装Vue.js,并且建立一个基本的Vue.js应用。 安装Vue.js 安装Vue.js最简单的方法是使用npm (node package manager)。首先,安装node.js和npm,然后在命令行中输入以下内容: npm install vue 创建Vue.js应用 …

    Vue 2023年5月27日
    00
  • 解决Vue+Electron下Vuex的Dispatch没有效果问题

    解决 Vue+Electron 下 Vuex 的 Dispatch 没有效果问题 问题描述: 在使用 Vue+Electron 构建桌面应用程序时,可能会遇到 Vuex 的 Dispatch 方法无法正常触发 Action 的问题。例如下面的代码: // 在 Vue 组件中的方法里调用 Action,但没有效果 this.$store.dispatch(‘g…

    Vue 2023年5月28日
    00
  • vue实现实时搜索显示功能

    要实现Vue实时搜索显示功能,有以下几个步骤: 创建Vue实例 绑定数据 创建搜索过滤器 创建搜索输入框 显示搜索结果 下面我们来详细讲解这个完整攻略。 创建Vue实例 首先要创建Vue实例,这可通过引入Vue库来实现。需要在HTML文件中引入如下代码: <script src="https://cdn.jsdelivr.net/npm/vu…

    Vue 2023年5月27日
    00
  • vue2.0移动端滑动事件vue-touch的实例代码

    下面我将详细讲解vue2.0移动端滑动事件vue-touch的实例代码的完整攻略。 简介 Vue-Touch是一个基于HammerJS封装的适用于Vue2.x的触摸插件。它可以在Vue组件中使用v-touch指令,实现触屏事件的绑定和处理,包括Tap、Doubletap、Press、Swipe、Pinch、Rotate等常见的手势事件。 安装 在使用vue-…

    Vue 2023年5月29日
    00
  • web worker在项目中的使用学习为项目增加亮点

    下面我来详细讲解一下在项目中使用Web Worker,并给出两个示例说明。 1.什么是Web Worker Web Worker是HTML5提供的一个API,可以在浏览器后台线程中执行JavaScript脚本,使浏览器UI线程不受阻塞,提高了网页的响应速度。 2.在项目中为什么使用Web Worker Web Worker可以提高页面的响应速度,降低了网站的…

    Vue 2023年5月28日
    00
  • vue2.0开发实践总结之疑难篇

    Vue2.0开发实践总结之疑难篇攻略 在Vue2.0开发实践中,我们经常会遇到一些疑难问题。本攻略主要介绍Vue2.0开发中的一些常见疑难问题及其解决方法。 1. Vue组件中引入CSS文件 使用Vue开发时,可以使用<style>标签将样式写在组件内部,但是当我们需要引入外部的CSS文件时应该怎么办?我们可以使用@import或<link…

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