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日

相关文章

  • Win10 Build 10532运行上手高清截图 改进右键菜单

    这是一篇关于如何在Win10 Build 10532上使用高清截图和改进右键菜单的完整攻略。通过本文,您将了解到具体的步骤,并通过两条具体的示例说明实际操作。 高清截图 步骤一:打开Snipping 定位工具 首先,从开始菜单中找到”Snipping 工具”并打开。您也可以使用Win+Shift+s快捷键打开截图工具。 步骤二:选择截图区域 鼠标会变成十字架…

    other 2023年6月27日
    00
  • 路由器(斐讯)修改默认IP地址的方法

    路由器(斐讯)修改默认IP地址的方法攻略 1. 登录路由器管理界面 首先,确保你已经连接到路由器的网络。然后按照以下步骤登录路由器管理界面: 打开你的网页浏览器(如Chrome、Firefox等)。 在地址栏中输入默认的路由器IP地址。斐讯路由器的默认IP地址通常是192.168.1.1或192.168.0.1。如果你不确定路由器的默认IP地址,可以查看路由…

    other 2023年7月30日
    00
  • 在c#中实现视频播放器

    在C#中实现视频播放器的完整攻略 本文将提供一份关于在C#中实现视频播放器的完整攻略,包括定义、实现步骤、示例说明以及注意事项。 定义 视频播放器是一种用于播放视频文件的应用程序。在C#中,我们可以使用Windows Media Player控件来实现视频播放器。 实现步骤 以下是在C#中实现视频播放器的步骤: 创建一个Windows Forms应用程序。 …

    other 2023年5月9日
    00
  • 详解spring集成mina实现服务端主动推送(包含心跳检测)

    详解spring集成mina实现服务端主动推送(包含心跳检测) 1. 概述 本文主要介绍如何使用Spring集成Apache Mina框架,实现服务端主动推送功能。其中包含心跳检测机制,确保客户端与服务端的保持连接。本文将分步骤详细介绍实现过程,并提供示例代码。 2. 环境准备 本文使用的环境为: Java SDK 1.8 Spring Framework …

    other 2023年6月27日
    00
  • 宽带连接错误解决方法总汇( 651、691、623、678、645、720、721、718、734、769、619

    宽带连接错误是指由于某些原因导致计算机无法连接到互联网,出现错误提示码。其常见的错误代码包括651、691、623、678、645、720、721、718、734、769、619等。 下面介绍一些常见的宽带连接错误解决方法: 故障排除 检查宽带连接相关设备的电源是否正常,包括路由器、调制解调器等。 检查连接线是否插好,线路是否正常。 检查网络适配器是否启用、…

    other 2023年6月27日
    00
  • 快递查询api(多接口方案)

    快递查询API(多接口方案) 快递行业在近年来发展迅速,为进一步提升物流效率,许多企业都开发了自己的快递查询服务。但是,由于不同快递公司的api接口和数据格式不尽相同,如果只依赖一个快递公司的api,就可能无法满足多种快递查询需求。而通过多接口方案,可以轻松实现多个快递公司的数据统一接口,从而提高查询效率和用户体验。 单一快递公司API的局限性 传统的快递查…

    其他 2023年3月28日
    00
  • Android中编写属性动画PropertyAnimation的进阶实例

    Android中编写属性动画PropertyAnimation的进阶实例攻略 属性动画(Property Animation)是Android中一种强大的动画机制,可以对任意对象的属性进行动画操作。本攻略将详细讲解如何在Android中编写属性动画的进阶实例。 步骤一:导入属性动画库 首先,需要在项目的build.gradle文件中添加属性动画库的依赖: d…

    other 2023年9月7日
    00
  • jenkins忘记管理员登陆密码的补救措施

    Jenkins 忘记管理员登录密码的补救措施 在使用 Jenkins 进行持续集成和持续交付时,我们可能会遇到忘记管理员登录密码的情况。本文将介绍 Jenkins 忘记管理员登录密码的补救措施,包括基本概念、应用场景、实现方法和示例说明。 基本概念 Jenkins 是一款流行的开源持续集成和持续交付工具,可以用于构建、测试和部署软件。在 Jenkins 中,…

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