VUE前后端分离之数据交互(简单项目作为演示)

本文主要介绍了在Vue前端项目中如何配置和使用axios访问SpringBoot后端API,包括添加依赖、处理跨域问题以及前端发起HTTP请求的详细步骤。在前端,通过$axios.post()方法发送请求到后端特定接口,实现了数据的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


提示:这里重点演示前端如何访问后端,对于前、后端的建立不作为重点

一、添加后端访问依赖

  1. 进入前端vue项目,进入内部或外部终端

  2. 输入如下代码并安装

    cnpm install axios --save
    cnpm install qs --save
    
  3. 安装好之后可以在package.json中看到添加的依赖
    在这里插入图片描述

  4. 在main.js中引入添加的依赖(main,js中存储组件的公共依赖,在此文件中添加依赖后无需再在各组件文件里单独添加依赖)

    1. 引入依赖
      在这里插入图片描述
    2. 设置别名
      在这里插入图片描述
    3. 在组件文件中通过 this.$axios.xxx 等即可使用依赖

二、建立后端

后端的建立可参考基于 Spring Mvc 一个简单项目的基本流程 <用户注册功能>(校正版)的第一、二步,建立符合自己前端的后端。
处理跨域问题 :前后端分离开发后,前后端的访问最主要的问题即跨域,即对于http的请求,为了安全,禁止ip地址和不同端口的程序项目访问,准确说仅可以访问但不响应。由于采用SpringBoot,所以通过在控制器中添加注解来解决。
在这里插入图片描述

三、配置前端

直接上前端的JS处代码

<script>
    export default{
        name:'Users',
        data() {
            return {
                emp:{
                    ename:'',
                    loSal:'',
                    hiSal:'',
                    deptno:'',
                },
                depts:[],
                emps:[],
                pageNum:1,//当前页
                pageTotle:0 ,//总条数
                pageSize:4   //每页显示几条
            }
        },
        methods:{
            // 定义页面加载方法(例如搜索按钮触发该事件)
            init(){
                // ###打包参数###
                this.emp.pageNum=this.pageNum;//JS中变量可以动态自动添加,可以不实现定义emp.pageNum
                this.emp.pageSize=this.pageSize;
                // 把json对象转为字符串
                var param=this.$qs.stringify(this.emp);// 将emp数据转为字符串,作为参数上传

                // ###参数传递、结果接收###
                this.$axios // 将参数上传到后台的服务器端口8088、访问路径/vue、以及控制器与方法的RequestMapping路由
                    .post("http://localhost:8088/vue/emp/findByParam",param) //参数传递
                    .then(rst => { // 结果接收
                        console.log(rst);//如果获取了结果就在控制台打印
                        // vue前端将返回的后端返回的结果用data封装,而rst是包含了data以及其他参数的总结果集合
                        this.emps = rst.data.list;
                        this.pageTotle = rst.data.total;
                    }).catch(ex => {
                        console.log(ex);//如果没获取结果,就打印错误
                    });
            },
            // 定义Search方法
            search(){
                // 即页面加载方法
                this.init()
            }
        }
    }
</script>

重点在于参数的目的地是 “http://localhost:8088/vue/emp/findByParam” ,这串链接的来源如下:

http://localhost:8088/vue
在这里插入图片描述
/emp/findByParam
在这里插入图片描述

### SpringBoot与Vue前后端分离架构下的数据交互实现方式 #### 1. 架构概述 在前后端分离的架构中,前端负责页面展示和用户体验逻辑处理,而后端则专注于业务逻辑和服务接口的提供。两者通过API进行通信,通常采用RESTful风格的设计[^1]。 #### 2. 后端SpringBoot的数据准备 后端基于SpringBoot框架构建服务层,主要完成以下功能: - **Controller层**:定义对外暴露的RESTful API接口,接收来自前端的HTTP请求。 - **Service层**:封装具体的业务逻辑,调用数据库或其他外部资源。 - **Mapper/Repository层**:负责与数据库交互,执行增删改查操作。 示例代码如下: ```java @RestController @RequestMapping("/api/users") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public ResponseEntity<User> getUserById(@PathVariable Long id) { User user = userService.getUserById(id); return ResponseEntity.ok(user); } } ``` 上述代码展示了如何创建一个用于查询用户的GET接口[^2]。 #### 3. 前端Vue的数据获取 前端使用Vue.js作为核心框架,结合Axios库发起异步请求,从而实现与后端的数据交互。以下是具体流程: - 安装Axios插件以支持HTTP请求发送: ```bash cnpm install axios -S cnpm i vue-axios -S ``` - 编写组件中的方法来调用后端API: ```javascript import axios from 'axios'; export default { data() { return { users: [] }; }, methods: { async fetchUsers() { try { const response = await axios.get('http://localhost:8080/api/users'); this.users = response.data; } catch (error) { console.error("Error fetching users:", error); } } }, mounted() { this.fetchUsers(); } }; ``` 此部分代码演示了如何利用`mounted`生命周期钩子,在组件加载完成后自动向后端请求用户列表数据[^4]。 #### 4. 测试与调试 为了验证前后端之间的正常工作状态,可以采取以下措施: - 使用Postman工具模拟各种类型的HTTP请求,确保后端返回预期的结果。 - 开启浏览器开发者模式(F12),观察实际发生的网络活动及其响应情况,确认路径匹配正确无误。 当一切配置妥当时,启动整个应用链路——即先运行SpringBoot服务器再打开包含Vue实例化的网页文件,则能够顺利达成所期望的功能效果[^3]。 #### 总结 综上所述,借助现代技术栈如SpringBoot加Vue组合而成的应用程序体系结构里,双方各自承担不同职责并通过标准化协议衔接起来形成完整的解决方案链条;其中特别强调的是它们之间依靠精心设计好的API契约来进行高效沟通协作机制的重要性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值