vue3(vite)设置代理封装axios api解耦功能

我来详细讲解一下“vue3(vite)设置代理封装axios api解耦功能”的完整攻略。

一、背景介绍
在使用Vue3(vite)进行前端开发过程中,我们常常需要请求后端提供的API接口。如果每个组件都直接使用axios这个HTTP库去请求API接口的话,会造成以下两个问题:

  1. 代码重复,不易维护
  2. 无法动态修改后端接口地址

于是,我们需要对axios进行封装,封装出一个API模块,使得每个组件只需调用该API模块,即可完成向后端请求数据的操作。同时,由于后端接口地址可能会发生变化,所以我们需要在封装过程中增加代理设置,方便我们动态修改后端接口地址。

二、封装Axios API
首先安装axios库和vue-router库,然后在src目录下新建一个api目录,在该目录下新建一个index.js文件,此文件用于导出各个API具体内容,同时定义了基础URL和axios对象,接下来我们对其进行封装。

1.引入axios库和vue-router库。

// api/index.js
import axios from 'axios'
import router from '@/router'

2.在axios对象中配置一些全局参数,比如设置超时时间、设置请求拦截器等。

// api/index.js
const instance = axios.create({
    baseURL:  '/api',
    timeout: 5000
});

instance.interceptors.request.use(config => {
    // 在请求发送之前,对config进行一些操作比如设置token之类的
    return config;
}, error => {
    // 请求错误时的操作
    console.error("Req Error:" + error)
    Promise.reject(error);
});

instance.interceptors.response.use(response => {
    // 在响应收到之前,可以对响应结果进行一些操作,比如对后端返回的数据进行格式化等操作
    return response.data
}, error => {
    // 响应错误时的操作
    console.error("Response Error:" + error)
    return Promise.reject(error);
});

3.定义各个API。例如创建用户接口createUser:

// api/index.js
export const createUser = (data) => {
    return instance.post('/users', data)
}

完整代码:

// api/index.js
import axios from 'axios'
import router from '@/router'

const instance = axios.create({
    baseURL:  '/api',
    timeout: 5000
});

instance.interceptors.request.use(config => {
    // 在请求发送之前,对config进行一些操作比如设置token之类的
    return config;
}, error => {
    // 请求错误时的操作
    console.error("Req Error:" + error)
    Promise.reject(error);
});

instance.interceptors.response.use(response => {
    // 在响应收到之前,可以对响应结果进行一些操作,比如对后端返回的数据进行格式化等操作
    return response.data
}, error => {
    // 响应错误时的操作
    console.error("Response Error:" + error)
    return Promise.reject(error);
});

export const createUser = (data) => {
    return instance.post('/users', data)
}

export const getUser = (userId) => {
    return instance.get(`/users/${userId}`)
}

export const updateUser = (userId, data) => {
    return instance.put(`/users/${userId}`, data)
}

export const deleteUser = (userId) => {
    return instance.delete(`/users/${userId}`)
}

三、设置代理
在封装好Axios API后,我们需要设置代理,方便后续修改API请求地址。在vite.config.js文件中,配置如下:

// vite.config.js
export default {
  server: {
    proxy: {
      '/api': {
        // 应对跨域情况
        target: 'http://192.168.1.100:8080',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  },
}
  • /api:表示需要代理的接口路径,这里的/api需要与API模块中设置的baseURL一致。
  • target:表示代理的目标地址,即后端API接口地址。
  • changeOrigin:表示是否跨域,如果后端请求地址与前端不在一个域名下,则需要开启跨域。
  • rewrite:表示重写请求地址,这里默认将API路径中的 '/api' 替换为空。

四、示例说明
我们以获取用户信息为例,介绍如何使用Axios API。首先,在Vue3组件中引入API模块,然后调用getUser()方法,最后对获取到的用户数据进行展示。

<!-- User.vue -->
<template>
  <div>
    <h1>用户信息</h1>
    <p>姓名: {{ user.name }}</p>
    <p>年龄: {{ user.age }}</p>
    <p>性别: {{ user.gender }}</p>
  </div>
</template>

<script>
import { getUser } from '@/api'

export default {
  data () {
    return {
      user: {}
    }
  },
  methods: {
    async fetchUser () {
      const userId = this.$route.params.id
      const user = await getUser(userId)
      this.user = user
    }
  },
  created () {
    this.fetchUser()
  }
}
</script>

这里通过引入API模块,调用getUser()方法获取用户数据,并将获取到的数据赋值给user属性,最后在页面中展示用户数据即可。

对于代理设置,我们可以在 vite.config.js 中修改 target 参数,来动态修改后端API接口地址,从而使其具有更好的可维护性和扩展性。

export default {
  server: {
    proxy: {
      '/api': {
        target: 'http://192.168.1.200:8080', // 修改为另外的地址
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ''),
      },
    },
  },
};

这样,在切换到新的后端API地址时,我们无需修改各个组件中的API请求路径,只需修改 vite.config.js 中的 target 配置即可。

五、总结
本文对Vue3(vite)中如何封装axios API并设置代理进行了详细的讲解,其中包含了完整的代码示例和代理设置方案。通过这种方式,我们可以优化前端代码结构,提高代码复用性和可维护性,同时也能够方便地切换后端API接口路径,从而保证项目稳定性和扩展性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue3(vite)设置代理封装axios api解耦功能 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • linux下使用github

    Linux下使用GitHub的完整攻略 GitHub是一个非常流行的代码托管平台,许多开发者都在上面分享自己的代码。在Linux系统中,可以使用命令行工具来使用GitHub。本攻略将详细介绍如何在Linux系统中使用GitHub。 1. 安装Git 在使用GitHub之前,需要先安装Git。可以使用以下命令在Linux系统中安装Git: sudo apt-g…

    other 2023年5月7日
    00
  • Android编程之include文件的使用方法

    Android编程之include文件的使用方法攻略 在Android编程中,我们经常会使用include文件来重用布局和视图组件。include文件允许我们在一个布局文件中引用另一个布局文件,从而实现代码的复用和模块化。下面是使用include文件的完整攻略,包含两个示例说明。 步骤一:创建被引用的布局文件 首先,我们需要创建一个被引用的布局文件,即将被重…

    other 2023年8月26日
    00
  • 解决asp.net上传文件时文件太大导致的错误

    解决ASP.NET上传文件时文件太大导致的错误 在ASP.NET的应用程序中,当用户上传大文件时,有时会因为文件太大而导致错误。这种错误通常是由于ASP.NET应用程序默认上传文件大小限制导致的。如果您想上传大文件,您需要增大文件上传大小的限制。以下是解决ASP.NET上传文件时文件太大导致的错误的方法: 方法1:通过Web.Config配置文件增大上传文件…

    其他 2023年3月28日
    00
  • 用电脑时我的系统总是重启为什么?

    针对“用电脑时我的系统总是重启”的问题,我们需要先了解可能导致系统重启的原因,再逐一排查解决。 可能导致系统重启的原因: 1.硬件问题:如电源故障、内存问题、硬盘问题等。 2.软件问题:如系统错误、病毒感染等。 3.过热:长时间使用、灰尘积聚等情况导致电脑过热,导致自动重启。 解决过程如下: 1.排查硬件问题 第一步,检查电源是否正常。可能存在电源老化或损坏…

    other 2023年6月26日
    00
  • C++音乐播放按钮的封装过程详解

    C++音乐播放按钮的封装过程详解 在本篇攻略中,我们将会详细讲解如何使用C++对音乐播放按钮进行封装。这个过程中,我们需要用到以下步骤: 确定需求和按钮设计 编写头文件和源文件 在主函数中实例化 进行功能测试 确定需求和按钮设计 在进行封装之前,首先需要确定我们的需求和按钮设计。在这个例子中,我们需要做出一个简单的音乐播放按钮,它可以控制音乐的播放、暂停和停…

    other 2023年6月25日
    00
  • 什么是oss/bss(电信业务)

    什么是OSS/BSS(电信业务) 介绍 OSS和BSS的区别 OSS的功能 BSS的功能 介绍 OSS(Operations Support Systems)和BSS(Business Support Systems)是电信业务中两个关键的子系统,分别负责运营和业务支持。 OSS系统主要处理运营过程中的实际操作,例如设置和安装网络设备、维护网络设备和服务、故…

    其他 2023年3月28日
    00
  • 详解JAVA中implement和extends的区别

    详解JAVA中implement和extends的区别 在JAVA中,implement和extends是两个重要的关键字,它们用于实现接口和继承类,但是它们有着不同的特点和应用场景。 implement implement用于实现一个接口,它必须在类中实现接口中定义的所有方法,并且可以实现多个接口,用”,”隔开。 示例1 public interface …

    other 2023年6月27日
    00
  • SpringBoot优先加载指定Bean的实现

    要讲解SpringBoot优先加载指定Bean的实现,需要先理解Spring Boot中的依赖注入和Bean的加载机制。 SpringBoot中默认使用的是自动配置(auto-configuration)机制。它的实现是依赖于Spring Framework中的IoC容器和Bean的加载机制的。IoC容器是通过依赖注入(DI)来实现Bean的创建和装配的。 …

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部