一、前后端交互模式
1.1 接口调用方式
原生ajax
基于JQuery的ajax
fetch
axios
返回一个完整的HTML页面
也可以只返回特定格式的数据,比如json
1.2 URL地址格式
(1) 传统形式的URL
格式: schema://host:port/path?query#fragment
schema:协议。如http、https、ftp等
host:域名或IP地址
port:端口,http默认端口80
path:路径 例如/abc/a/b/c
query:查询参数 例如uname=lisi&age=12
fragment:锚点(哈希hash),用于定位页面的某个位置
符合规则的URL
http://www.itcast.cn
http://www.itcast.cn/java/web
http://www.itcast.cn/java/web?flag=1
http://www.itcast.cn/java/web?flag=1#function
(2) Restful形式的URL
HTTP请求方式
GET 查询
POST 添加
PUT 修改
DELETE 删除
符合规则的URL
http://www.hello.com/books GET
http://www.hello.com/books POST
http://www.hello.com/books/123 PUT
http://www.hello.com/books/123 DELETE
二、Promise 用法
2.1 异步调用
异步效果分析
定时任务 setTimeout setInterval
Ajax
事件函数
多次异步调用的依赖分析
多次异步调用的结果顺序不确定
嵌套调用结果如果存在依赖需要嵌套
2.2 Promise概述
Promise是异步编程的一种解决方案,从语法上讲。Promise是一个对象,从它可以获取异步操作的消息。
使用Promise主要有以下好处
可以避免多层异步调用嵌套问题(回调地狱)
Promise对象提供了简洁的API,使得控制异步操作更加荣哟
2.3 Promise 基本用法
实例化Promise对象,构造函数中传递函数,该函数用于处理异步任务
resolve和reject两个参数用于处理成功与失败两种情况,并通过p.then获取与处理结果
2.4 基于Promise处理Ajax请求
1. 处理原生Ajax
2. 发送多次ajax请求
2.5 then参数中的函数返回值
1. 返回Promise实例对象
返回的该实例对象会调用下一个then
2. 返回普通值
返回的普通值会直接传递给下一个then,通过then参数中函数的参数接收该值
2.6 Promise常用的API
1. 实例方法
p.then() 得到异步任务的正确结果
p.catch() 获取异常信息
p.finally() 成功与否都会执行
2. 对象方法
Promise.all() 并发处理多个异步任务,所有任务都执行完成才能得到结果
Promise.race() 并发处理多个异步任务,只要有一个任务完成就能得到结果
三、接口调用-fetch用法
3.1 fetch 概述
(1) 基本特性
更加简单的数据获取方式,功能更强大、更灵活,可以看做是xhr的升级版
基于Promise实现
(2) 语法结构
3.2 fetch的基本用法
.text();
3.3 fetch请求参数
(1) 常用配置选项
method(String):HTTP请求方法,默认为GET(POST、PUT、DELETE)
body(String):HTTP请求参数
headers(Object):HTTP的请求头,默认为{}
(2) GET请求方式的参数传递
(3) DELETE请求方式的参数传递
(4) POST请求方式的参数传递
(5) PUT请求方式的参数传递
3.4 fetch响应结果
响应数据格式
text(): 将返回体处理成字符串类型
json: 返回结果和JSON.parse(responseText)一样
四、接口调用-axios用法
4.1 axios 的基本特性
它具有以下特征
支持浏览器和node.js
支持Promise
能拦截请求和响应
自动转换JSON数据
4.2 axios 的基本用法
4.3 axios 的常用API
get: 查询数据
post: 添加数据
put: 修改数据
delete: 删除数据
4.4 axios 的参数传递
(1) GET传递参数
通过URL传递参数
通过params选项传递参数
(2) DELETE传递参数
参数传递方式与GET类似
(3) POST传递参数
通过选项传递参数(默认传递的是json格式的数据)
通过URLSearchParams传递参数(application/x-www/form/urlencoded)
(4) PUT传递参数
参数传递方式与POST类似
4.5 axios 的响应结果
响应结果的主要属性
(1) data: 实际响应回来的数据
(2) headers: 响应头信息
(3) status: 响应状态码
(4) status Text: 响应状态信息
 
4.6 axios 的全局配置
axios.defaults.timeout = 3000; // 超时事件
axios.defaults.baseURL = 'http://localhost:300/app'; // 默认地址
axios.defaults.headers['mytoken'] = 'aduhaiurhuh332341bhjiuh';// 设置请求头
 
4.7 axios拦截器
(1) 请求拦截器
在发出请求之前设置一些信息
 
(2) 响应拦截器
在获取数据之前对数据做一些加工处理
五、接口调用-async/await用法
5.1 async/await 的基本用法
async/await是ES7引入的新语法,可以更加方便的进行异步操作
async关键字用于函数上 (async函数的返回值是Promise实例对象)
await关键字用于async函数当中 (await可以得到异步的结果)
5.2 async/await 处理多个异步请求
多个异步请求的场景
六、基于接口的案例
需要调用接口的功能点
(1) 图书列表数据加载
(2) 添加图书
(3) 验证图书名称是否存在
(4) 编辑图书-根据ID查询图书信息
(5) 编辑图书-提交图书信息
(6) 删除图书

5.Vue前后端交互的更多相关文章

  1. 三、vue前后端交互(轻松入门vue)

    轻松入门vue系列 Vue前后端交互 六.Vue前后端交互 1. 前后端交互模式 2. Promise的相关概念和用法 Promise基本用法 then参数中的函数返回值 基于Promise处理多个A ...

  2. Flask + vue 前后端分离的 二手书App

    一个Flask + vue 前后端分离的 二手书App 效果展示: https://blog.csdn.net/qq_42239520/article/details/88534955 所用技术清单 ...

  3. Vue-CLI项目-axios模块前后端交互(类似ajax提交)

    08.31自我总结 Vue-CLI项目-axios前后端交互 一.模块的安装 npm install axios --save #--save可以不用写 二.配置main.js import axio ...

  4. vue前后端分离

    axios前后端交互 安装 一定要安装到`项目目录下 cnpm install axios 配置 在main.js中配置 //配置axios import axios from 'axios' Vue ...

  5. Vue - 与后端交互

    零:与后端交互 - ajax 版本1 - 出现了跨域问题 前端:index.html <!DOCTYPE html> <html lang="en"> &l ...

  6. 谷粒商城为什么要选择后天管理用vue前后端分离,而商城页面选择Thymeleaf类?

    1.最初使用jsp开发web项目 还记得刚学习Java的时候,自己开发一个web项目,那时候前后端分离还不流行,为了在页面中显示动态数据,最终的形式也就是以动态网页响应用户,Java一种技术jsp,J ...

  7. Vue之前后端交互

    Vue之前后端交互 一.前后端交互模式 接口调用方式 原生ajax 基于jQuery的ajax fetch axios 异步 JavaScript的执行环境是「单线程」 所谓单线程,是指JS引擎中负责 ...

  8. Node之简单的前后端交互

    node是前端必学的一门技能,我们都知道node是用的js做后端,在学习node之前我们有必要明白node是如何实现前后端交互的. 这里写了一个简单的通过原生ajax与node实现的一个交互,刚刚学n ...

  9. Django之META与前后端交互

    Django之META与前后端交互 1 提交表单之GET 前端提交数据与发送 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请 ...

  10. 解决Django+Vue前后端分离的跨域问题及关闭csrf验证

      前后端分离难免要接触到跨域问题,跨域的相关知识请参:跨域问题,解决之道   在Django和Vue前后端分离的时候也会遇到跨域的问题,因为刚刚接触Django还不太了解,今天花了好长的时间,查阅了 ...

随机推荐

  1. c# TPL中的数据竞争-Data Race

    例一: Parallel.For(1, arraySize, i => { ary[i] = ary[i] + ary[i - 1]; });如下: object _lock = new obj ...

  2. APP的文件数据直传腾讯云COS实践

    简介 本文主要介绍基于腾讯云对象存储COS,如何快速实现一个app的文件直传功能.您的服务器上只需要生成和管理访问密钥,无需关心细节,文件数据都存放在腾讯云 COS 上. 架构说明 对于app应用,把 ...

  3. 打卡node day01--基础和fs内置模块

    一, 检查 node 版本 node -v 或 node --version 二,检查安装过的node 版本(nvm node 版本管理工具  安装链接 参考百度) nvm ls 三,切换node 版 ...

  4. DataStructures 01 日期抽象类设计与实现

    1.思维导图以及学习体会 1.1 思维导图 1.2 学习体会 比较大的一个感概就是学习数据结构必须要一步一步来,前期切不可跳过思考过程, 最好的办法还是每一步慢慢分析,写在纸上,初期就要慢慢分析慢慢来 ...

  5. 转载:java中DAO层、Service层、Control层的说明

    转自:https://blog.csdn.net/qq_22771739/article/details/82344336?utm_source=blogxgwz6 DAO层:DAO层叫数据访问层,全 ...

  6. 整合mybatis实现简单的增删改查

    mybatis配置相关代码 配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE conf ...

  7. 同一系统开启两个ftp进程

    1.正常情况是yum 安装vsftpd服务 ,在/etc/vsftpd目录更改配置,起服务.这样启动是一个服务. 2.启动第二个vsftpd服务 #创建虚拟用户 useradd -d /home/vi ...

  8. elk安装(简)

    1.到官网下载对应的版本注意最好使用版本相同的3个软件 elasticsearch-6.8.7.rpm kibana-6.8.7-x86_64.rpm logstash-6.8.7.rpm 我这里使用 ...

  9. 实时中文语音克隆——开源项目MockingBird体验

    [引子] 在今年大型网络攻防演练前不久,笔者接到一个公司的座机号码来电,上来就问防守准备得怎么样了,哪里还有不足等.等等,这声音不认识,笔者第一反应就是蓝军(Red Team)来进行社会工程攻击,于是 ...

  10. Leetcode48 旋转图像

    48. 旋转图像 难度中等432 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵 ...