Vue前后端跨域链接

前端更改访问方式

在vite.config.js文件设置映射的路径

export default defineConfig({
  plugins: [
    vue(),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:8080',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  }
})

创建一个request.js文件,创建一个基于 Axios 的 HTTP 客户端实例,并设置了一个基本的 URL 前缀api,这个api是所有请求的公共前缀。

import axios from 'axios';
import{ElMessage} from 'element-plus'

import router from '@/router/router.js'
//定义一个变量,记录公共的前缀  ,  baseURL
const baseURL = '/api';
const instance = axios.create({baseURL})

使用方法

1、action:

 <el-upload class="avatar-uploader" :show-file-list="false" :auto-upload="true" action="/api/upload"
                         name="file" :headers="{ 'Authorization': tokenStore.token }" :on-success="uploadSuccess">
                        <img v-if="imgUrl" :src="imgUrl" class="avatar" />
                        <img v-else src="@/assets/avatar.jpg" width="150px" height="150px" />
                    </el-upload>

这个文件上传action对应的路径是** /api/upload **,实际上api会被替换。

2、 在普通方法函数上可以省略api,直接写后端函数路径

import request from  '@/utils/request.js'
 
// 登录
export const loginUserService=(registerData)=>{
    const params = new URLSearchParams()
    for (let key in registerData){
        params.append(key,registerData[key])
    }
    return request.post('/user/login',params)
}

总结一下前端端口配置文件的各个参数意义

  • '/api’:这是指定要代理的路径前缀。当前端应用程序发出以 /api 开头的请求时,将会触发代理配置。
  • target: ‘http://localhost:8080’:这是指定代理的目标服务器地址。所有匹配到的请求将被转发到这个地址上,即将前端请求代理到后端的目标服务器地址。
  • changeOrigin: true:这是一个布尔值,表示是否修改请求头中的 “Origin” 字段为目标服务器的地址。设置为 true 可以解决一些跨域请求的问题。
  • rewrite: (path) => path.replace(/^/api/, ‘’):这是一个重写函数,用于修改请求的路径。在这个例子中,它的作用是将请求路径中的 /api 前缀去除,以便与后端服务器的路由匹配。

通过这段配置,当前端应用程序发起以 /api 开头的请求时,请求将被代理到 http://localhost:8080(即后端 API 服务器)上进行处理。这样可以解决前端与后端的跨域请求问题,同时简化前端代码中的请求路径。

<think>好的,用户之前已经问过Java前后端如何链接的问题,现在具体问的是Spring Boot和Vue怎么链接。我需要回顾之前的回答,看看有没有需要调整的地方。 首先,用户可能已经了解前后端分离的基本概念,现在需要更具体的步骤。之前的回答提到了RESTful API、JSON数据格式和CORS配置,这些在Spring Boot和Vue中也是适用的,但需要更详细的操作步骤。 接下来,我需要考虑用户可能的实际应用场景。他们可能正在开始一个项目,需要从零搭建前后端环境。因此,我应该提供具体的搭建步骤,比如项目创建、接口编写、前端请求方法等。 用户可能还不太清楚如何启动前后端项目,或者如何解决问题。之前的回答提到了CORS配置,但在Spring Boot中可能有更简便的方式,比如使用注解或者配置类。需要详细说明这部分内容。 另外,前端使用Vue的话,可能需要介绍axios的使用,以及如何配置代理解决问题。尤其是在开发环境下,前端代理可以避免问题,这样用户在实际开发中会更方便。 还有,用户可能对如何整合前端后端项目部署有疑问,比如是否需要将Vue打包后的文件放到Spring Boot的静态资源中。这时候需要分开发环境和生产环境来说明,避免混淆。 需要注意检查技术细节是否正确,比如Spring Boot的版本是否影响配置方式,Vue的axios请求示例是否正确。同时,确保代码示例的语法正确,避免误导用户。 最后,确保回答结构清晰,分步骤讲解,让用户能一步步跟着操作。可能还需要补充一些常见问题的解决方法,比如端口配置、错误处理,以及安全方面的建议,比如JWT的使用。</think>以下是 **Spring Boot + Vue** 前后端链接的完整实现方案,包含关键步骤与代码示例: --- ### 一、技术架构设计 - **前端**:Vue 3(组合式API) + Axios + Vue Router - **后端**:Spring Boot 3.x + Spring Data JPA + MySQL - **通信方式**:RESTful API + JSON --- ### 二、环境搭建步骤 #### 1. 后端(Spring Boot) 1. **创建项目** 通过 [start.spring.io](https://start.spring.io/) 生成项目,添加依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 2. **配置数据库**(`application.properties`) ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=123456 spring.jpa.hibernate.ddl-auto=update ``` 3. **编写实体与控制器** ```java @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String email; // getters & setters } @RestController @RequestMapping("/api/users") public class UserController { @Autowired private UserRepository userRepository; @GetMapping public List<User> getAllUsers() { return userRepository.findAll(); } @PostMapping public User createUser(@RequestBody User user) { return userRepository.save(user); } } ``` --- #### 2. 前端Vue) 1. **创建Vue项目** ```bash npm create vue@latest # 选择需要的配置(推荐启用Router、Pinia) ``` 2. **安装Axios** ```bash npm install axios ``` 3. **配置请求工具**(`src/utils/request.js`) ```javascript import axios from 'axios'; const service = axios.create({ baseURL: 'http://localhost:8080/api', // 后端地址 timeout: 5000 }); // 请求拦截器(可添加JWT认证) service.interceptors.request.use(config => { const token = localStorage.getItem('token'); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }); export default service; ``` --- ### 三、核心连接实现 #### 1. 前端调用API(Vue组件) ```vue <script setup> import { ref, onMounted } from 'vue'; import request from '@/utils/request'; const users = ref([]); // 获取数据 const fetchUsers = async () => { try { const response = await request.get('/users'); users.value = response.data; } catch (error) { console.error('请求失败:', error); } }; // 提交数据 const submitForm = async (formData) => { await request.post('/users', formData); await fetchUsers(); // 刷新列表 }; onMounted(() => { fetchUsers(); }); </script> ``` #### 2. 解决问题(开发环境) - **方案一:Vue代理配置**(`vite.config.js`) ```javascript export default defineConfig({ server: { proxy: { '/api': { target: 'http://localhost:8080', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') } } } }); ``` - **方案二:Spring Boot配置** ```java @Configuration public class CorsConfig { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("http://localhost:5173") // Vue开发服务器端口 .allowedMethods("*"); } }; } } ``` --- ### 四、部署联调要点 1. **前端打包** ```bash npm run build ``` - 生成`dist`目录(包含静态文件) 2. **后端集成前端资源**(Spring Boot) 将`dist`目录内容复制到`src/main/resources/static`,访问时直接运行Spring Boot应用 3. **生产环境配置** ```yaml # application-prod.yml spring: mvc: static-path-pattern: /** web: resources: static-locations: classpath:/static/ ``` --- ### 五、常见问题排查 | 问题现象 | 解决方案 | |--------------------------|-----------------------------------| | 404错误(接口找不到) | 检查后端Controller的`@RequestMapping`路径 | | 请求被拦截 | 确认CORS配置或代理是否生效 | | 数据库连接失败 | 检查MySQL服务状态及JDBC配置 | | 前端无法获取响应数据 | 使用浏览器开发者工具查看网络请求 | --- ### 六、扩展功能建议 1. **安全认证**:集成Spring Security + JWT 2. **API文档**:使用Swagger生成接口文档 3. **全局异常处理**:在后端统一处理异常响应格式 4. **文件上传**:通过MultipartFile实现文件传输 通过以上配置,Spring Boot与Vue即可实现完整的业务数据交互。实际开发中建议使用`Postman`先验证接口可用性,再编写前端逻辑代码。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

配个VLAN吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值