vue前后端交互

前后端交互与Promise详解

1.前后端交互模式

(1)接口调用方式

  • 原生ajax
  • 基于jq的ajax
  • fetch
  • axios

在vue中常用的是fetch和axios,通过url传输数据

(2)URL地址格式

        Restful形式的url

http请求方式:GET(查询)、  POST(添加)、  PUT(修改)、  DELETE(删除)

2.Promise用法

为解决嵌套回调函数编码方式带来的问题,所以在es6中新增了一个API:promise(承诺的,保证)

(1)使用:

  • 实例化promise对象,构造函数中传递函数,该函数中用于处理异步任务。
  • resolve和reject两个参数用于处理成功和失败两种情况,并通过p.then获取处理结果。
e.g:
//promise是一个构造函数
var fs = require('fs')
// 1.创建promise容器
//promise容器一旦创建,就会执行里面的代码
var one = new Promise(function (resolve,reject) {
    fs.readFile('./data/a.txt','utf8',function (err,data) {
        if(err){
            //承诺容器中的任务失败了
            //把容器的pending状态变为rejected
            // throw err
            reject(err)
        }
        //承诺容器中的任务成功了
        //把容器pending状态变为resolved
        // console.log(data)
        resolve(data)
    })
})

var two = new Promise(function (resolve,reject) {
    fs.readFile('./data/b.txt','utf8',function (err,data) {
        if(err){
            reject(err)
        }
        resolve(data)
    })
})

var three = new Promise(function (resolve,reject) {
    fs.readFile('./data/c.txt','utf8',function (err,data) {
        if(err){
            reject(err)
        }
        resolve(data)
    })
})

one.then(function (data) {
    console.log(data)
    return two
},function (err) {
    console.log('文件读取失败!',err)
}).then(function (data) {
    console.log(data)
    return three
}).then(function (data) {
    console.log(data)
})

(2)基于ajax的promise

function get(url) {
    return new Promise(function (resolve,reject) {
        var oReq = new XMLHttpRequest()
        oReq.onload = function () {
            //异步用回调函数返回操作结果
            resolve(oReq.responseText)
        }
        oReq.onerror = function(err){
            reject(err)
        }
        oReq.open('get',url,true)
        oReq.send()
    })
}

(3)promise中常用的API

p.then()  得到异步任务的正确结果

p.catch()  获取异常信息

p.finally()  成功与否都会执行 (但不是正确标准)

Promise.all()  并发处理多个异步任务,所有任务都执行完成才能得到结果

Promise.race()  并发处理多个异步任务,只要一个任务执行完成就能得到结果

3.接口调用fetch用法

fetch相比于传统的ajax更灵活,功能更强大,基于promise实现

语法结构:

fetch(url).then(f1)

              .then(f2)

              ...

              .catch(fn)

fetch的基本用法:

fetch('http://localhost:3000/abc').then(function(data){

 return data.text()

}).then(function(data){

  console.log(data)

})

text()方法属于fetchAPI的一部分,它返回一个promise实例对象,用于获取后台返回的数据,还有一个方法,json()是以对象形式获取返回的数据。

fecth请求参数:

get请求方式的参数传递:

post请求的参数传递:

传递JSON格式数据:

put请求方式的参数传递:

4.接口调用aixos用法

aixos是一个基于promise用于浏览器和node.js的HTTP客户端,能拦截和请求响应,自动转换JSON数据

去网站下载axios.js,引用进js文件就可以使用

https://github.com/axios/axios

基本用法:与fetch类似

get请求传参:

post请求传参:

json形式传递:

表单形式传递:

put请求传递参数:

axios全局配置:

anxios拦截器:

请求拦截器:在发送请求之前设置一些信息,通过拦截器可以控制所有请求

可以在拦截器中设置请求头

响应拦截器:

在获取数据之前,对数据进行一些加工处理

5.接口调用async/await用法

提高编程体验,更方便简洁,让异步看起来像是同步

多个异步请求的场景;

 

 

 

 

 

 

Spring Boot 和 Vue 前后端交互的逻辑原理基于前后端分离的架构思想,实现了前后端的职责分离与解耦合,使得前后端开发人员可以更专注于自己擅长的领域。 在这种架构中,前端(Vue)专注于客户端代码构造,负责接受和展示数据,处理渲染逻辑;而后端(Spring Boot)专注于服务器代码构造,负责提供数据,处理业务逻辑[^2]。前后端仅仅通过异步接口(如 AJAX/JSONP)进行交互,各自拥有独立的开发流程、构建工具和测试集,关注点分离,相对独立。 Vue 作为前端框架,拥有一系列生命周期钩子,这些钩子为开发者提供了在不同阶段执行代码的机会,可用于进行初始化操作、数据处理、DOM 操作以及资源清理等工作,有助于更好地管理前端逻辑和数据流动[^1]。 在开发环境方面,前端需要 node.js,使用 vue、axios、element - plus 等技术,开发工具可选用 Visual Studio Code;后端需要 jdk1.8、tomcat9、mysql8,采用 Spring Boot、MyBatis - plus 等技术,开发工具可使用 IntelliJ IDEA 2022.1、Navicat Premium、ApiPost6 等[^2]。 以下是一个简单的代码示例来展示前后端交互的过程: **前端(Vue)代码示例**: ```vue <template> <div> <button @click="fetchData">获取数据</button> <p>{{ data }}</p> </div> </template> <script> import axios from 'axios'; export default { data() { return { data: '' }; }, methods: { async fetchData() { try { const response = await axios.get('http://localhost:8080/api/data'); this.data = response.data; } catch (error) { console.error('Error fetching data:', error); } } } }; </script> ``` **后端(Spring Boot)代码示例**: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class DataController { @GetMapping("/api/data") public String getData() { return "这是从后端返回的数据"; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值