vue3项目将所有访问后端springboot的接口统一管理带跨域

本文主要是介绍vue3项目将所有访问后端springboot的接口统一管理带跨域,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

vue3项目将所有访问后端springboot的接口统一管理带跨域

  • 一、前言
    • 1.安装Axios
    • 2.创建Axios实例
    • 3.创建API服务文件
    • 4.在组件中使用API服务
  • 二、跨域
  • 三、总结


一、前言

在Vue 3项目中,统一管理所有访问后端Spring Boot接口的最佳实践是创建一个专门的API服务层。这可以让你的代码更加模块化、可维护和集中管理。你可以使用Axios库作为HTTP客户端来与后端进行通信。以下是详细步骤:

1.安装Axios

首先,确保你在项目中安装了Axios:

npm install axios

2.创建Axios实例

创建一个单独的文件(如axiosInstance.js)来配置Axios实例,这样可以统一管理请求的基本配置(如基础URL、请求拦截器等)。

// src/api/axiosInstance.js
import axios from 'axios';const axiosInstance = axios.create({baseURL: 'http://your-backend-url/api', // 替换为你的后端基础URLtimeout: 10000, // 设置请求超时时间
});// 可以添加请求拦截器
axiosInstance.interceptors.request.use(config => {// 在发送请求之前做些什么,比如添加tokenreturn config;},error => {// 对请求错误做些什么return Promise.reject(error);}
);// 可以添加响应拦截器
axiosInstance.interceptors.response.use(response => {// 对响应数据做点什么return response;},error => {// 对响应错误做点什么return Promise.reject(error);}
);export default axiosInstance;

3.创建API服务文件

创建一个文件夹(如api),并在其中创建一个文件(如userService.js)来管理所有用户相关的API调用。你可以根据业务逻辑创建多个服务文件,如authService.js, productService.js等。

// src/api/userService.js
import axiosInstance from './axiosInstance';const userService = {getUser(userId) {return axiosInstance.get(`/users/${userId}`);},createUser(userData) {return axiosInstance.post('/users', userData);},updateUser(userId, userData) {return axiosInstance.put(`/users/${userId}`, userData);},deleteUser(userId) {return axiosInstance.delete(`/users/${userId}`);},
};export default userService;

4.在组件中使用API服务

将API服务导入到你的Vue组件中,并调用相应的方法。

<template><div><h1>用户信息</h1><div v-if="user"><p>用户名: {{ user.name }}</p><p>邮箱: {{ user.email }}</p></div></div>
</template><script>
import { ref, onMounted } from 'vue';
import userService from '@/api/userService';export default {name: 'UserProfile',setup() {const user = ref(null);const fetchUser = async () => {try {const response = await userService.getUser(1); // 替换为实际用户IDuser.value = response.data;} catch (error) {console.error('获取用户失败:', error);}};onMounted(fetchUser);return {user,};},
};
</script><style scoped>
/* 添加你的样式 */
</style>

二、跨域

修改文件vue.config.js

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({transpileDependencies: true,// 解决使用表格时缩放页面报错devServer: {client: {overlay: false},},chainWebpack: (config) => {config.plugin('define').tap((definitions) => {Object.assign(definitions[0], {__VUE_OPTIONS_API__: 'true',__VUE_PROD_DEVTOOLS__: 'false',__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'false'})return definitions})},//解决跨域***********************其他代码不是devServer: {proxy: {'/dockingApi': {target: 'http://127.0.0.1:8888/', //接口域名changeOrigin: true,       //是否跨域pathRewrite: {'^/dockingApi': ''  //假如我们的地址是 /dockingApi/member/getToken 会转化为 /member/getToken}},}}})

三、总结

通过上述步骤,你可以将所有与后端Spring Boot交互的接口统一管理起来,这样不仅使代码更加结构化,还能提高代码的可维护性和可扩展性。

这篇关于vue3项目将所有访问后端springboot的接口统一管理带跨域的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1090145

相关文章

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

springboot将lib和jar分离的操作方法

《springboot将lib和jar分离的操作方法》本文介绍了如何通过优化pom.xml配置来减小SpringBoot项目的jar包大小,主要通过使用spring-boot-maven-plugin... 遇到一个问题,就是每次maven package或者maven install后target中的ja

Java中八大包装类举例详解(通俗易懂)

《Java中八大包装类举例详解(通俗易懂)》:本文主要介绍Java中的包装类,包括它们的作用、特点、用途以及如何进行装箱和拆箱,包装类还提供了许多实用方法,如转换、获取基本类型值、比较和类型检测,... 目录一、包装类(Wrapper Class)1、简要介绍2、包装类特点3、包装类用途二、装箱和拆箱1、装

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动