一、前后端交互模式
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. Mac实现截图OCR输出文字功能

    为什么要这个功能 工作中会经常遇到需要识别一个图片中的文本内容,需要快速的OCR识别,从而提高工作效率: 如何实现 snipaste + pngpaste + tesseract 安装流程与使用 安装 ...

  2. 实战记录在 Linux Ubuntu 20.04 安装VNC 远程桌面

    Virtual Network Computing (VNC),是一个图形桌面共享系统,允许我们像使用Windows桌面系统一样可视化的使用键盘和鼠标远程控制服务器,当做一台远程的电脑一样. 主要用在 ...

  3. 做文件上传功能时,dubbo对MultipartFile文件传输时,一个bug:Fail to decode request due to: RpcInvocation

    三月 22, 2019 2:37:27 下午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() fo ...

  4. vector 搜罗最强版

    vector 常见用法(以int类型为例) https://www.cnblogs.com/YJthua-china/p/6550960.html 概括描述总体vector,包括内存的探讨 https ...

  5. React 事件绑定this指向

    1. 推荐:使用class的实例方法 class Hello extends React.Component { handleClick = () => { this.setState({ .. ...

  6. git添加Github、Gitee、Gitlab秘钥

    傻逼兮兮的我以为这三个的秘钥都是通用的 参考原文:https://www.cnblogs.com/zmdComeOn/p/11748991.html 首先确认已安装Git,可以通过 git –vers ...

  7. 你能谈谈HashMap怎样解决hash冲突吗

    在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样. 当程序试图将多个 key-value 放入 HashM ...

  8. Unity Random

    Random 不仅可以随机值,还可以随机其它属性,用了这么久,刚知道... 譬如: rotation  随机Rotation onUnitSphere  球体表面随机点 insideUnitCircl ...

  9. mongodb更改账户密码

    docker部署方式更改 sudo docker exec -it mongodb mongo admin (登录数据库容器) use admin db.auth('admin','shijiehep ...

  10. varchar(1)占用几个字节

    在version4之前,MySQL中varchar长度是按字节:而version5之后,按字符.如varchar(6),在version4,表示占用6个字节,而在version5中,表示占用6个字符. ...