一、前后端交互模式
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. SQL 查找是否”存在”,别再用 COUNT 了,真的很费时间!

    根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢?无论是刚入道的程序员新星,还是精湛沙场多年的程序员老手,都是一如既往的c ...

  2. Java 日期类 处理

    原始方案:SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD"); //线程不安全类,最好不要用了,替代方案: Date ...

  3. Centos+django+uwsgi+python 环境搭建

    首先需要具备linux的基本操作. centos 6.x 版本默认安装的 python 版本为2.x 输入: [root@dev ~]# python -VPython 2.6.6 下面装一些用到的库 ...

  4. DIV CSS遮罩层(弹窗窗口)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. JS中有关闭包的相关内容及介绍

    1 var obj = (function (arg) { 2 // 这里就是一个简单的闭包,将局部变量 test和函数fn1 return出去 3 // 这样obj就可以拿到函数内部定义的变量在函数 ...

  6. EIRENE GSM-R编码计划

    Numbering plan overview This appendix provides an overview of the numbering plan as defined in this ...

  7. ant Vue select 多条数据重复的问题

    1.问题描述:select实现下拉的功能,并且带前端搜索,但是后端给的数据没去重,对象中所有的参数值有保持一致,试了下,发现只要key值和value值不一致就不会报错: 2.解决:key值用index ...

  8. windows检查

    # coding: UTF-8 import psutil import platform import re def get_cpu_used(upu_base, interval=1): perc ...

  9. git 代码强制回滚操作整理(线上线下一起)

    线上代码强制回滚操作,这边整理了一下 1.到线上 执行 git reset --hard xxxxxxxxxxx(更新前的一个版本)2.本地执行 和上面一样 git reset --hard xxxx ...

  10. 服务器重启后oracle监听无法打开

    我重启服务器后不知道为啥监听启动不了,试过各种办法都不行,然后把监听删了重新配置就可以了