前后端交互

前后端交互

前后端交互

​ + 客户端 和 服务端 进行通信

​ + 目的: 如何向服务器发送一段信息, 得到服务器反馈回来的结果

​ => 例如: 登录, 发送 用户名 和 密码, 接受返回 登录成功 或者 登录失败

​ => 例子: 列表, 发送 第几页 和 一页多少条, 接受返回 商品数组

前端如何和后端交互(通讯)

​ + 技术栈: ajax

​ => async 异步

​ => javascript

​ => and 和

​ => xml 严格的 html 格式数据

1. 创建 ajax 对象(专门用于发送 ajax 请求的 “工具”)

​ => 语法: const xhr = new XMLHttpRequest()

2. 配置本次的请求信息

​ => 语法: xhr.open(请求方式, 请求地址, 是否异步)

​ -> 请求方式: 按照接口文档书写

​ -> 请求地址: 按照接口文档书写

​ -> 是否异步: 默认是 true 表示 是异步, 选填 false, 表示 非异步(同步)

3. 把请求发送出去

​ => 语法: xhr.send()

4. 接受响应

​ => 依赖事件触发的, 因为 ajax 是异步的

​ => 语法: xhr.onload = function () {}

​ => 时机: 当前这个 ajax 请求结束以后, 触发

​ => 在 xhr 对象内, 有一个叫做 reponseText 的属性, 记录的就是后端返回的信息

http 通讯协议(了解)

​ + 约定了前后端交互的一种方式

​ + 这个协议只能 前端主动发起请求, 接受后端响应

1.基于 TCP/IP 协议的三次握手

​ + 目的是为了建立 客户端 和 服务端 的连接, 确保道路畅通

  1. 前端主动发送请求

​ + 把你想和后端说的事情说出来(一次只能说一个事情)

​ + 前端以请求报文的形式发送所有的内容

​ 2-1. 请求报文行

​ => 传输协议版本 http/1.1

​ => 请求方式 get

​ => 请求地址 /xxxx/yyyy

​ 2-2. 请求报文头(对本次请求的描述信息)

​ => userAgent 客户端信息

​ => platform 客户端操作系统

​ => host 客户端主机域名

​ => cookie 当你的 cookie 空间内有信息, 会自动携带

​ => content-type 前端请求体的数据格式

​ => …

​ 2-3. 请求报文空行

​ => 一个空白行

​ => 区分请求头和请求体的空白行

​ 2-4. 请求报文体

​ => 前端传递给后端的真实信息

​ => post 会有

​ => get 一般没有, 都连接在地址一起了

  1. 后端返回响应给前端

​ + 后端准备好给前端的信息

​ + 后端以响应报文的形式发送所有的内容

​ 3-1. 响应状态行

​ => 传输协议版本

​ => 响应状态码 200

​ => 简单描述 OK

​ 3-2. 响应报文头(对本次响应的描述信息)

​ => Server 服务器版本

​ => Date 服务器时间

​ => content-type 服务端响应体的数据格式

​ => content-length 响应体长度

​ => …

​ 3-3. 响应报文体

​ => 后端返回给前端的真实信息

  1. 基于 TCP/IP 协议的四次挥手

​ => 为了确保正确且安全的断开

三次握手

​ 1. 前端发送一个 “包” 给到后端

​ 2. 后端接收到前端的 “包” 以后, 返回一个 “包+包” 给到前端

​ 后端知道 前端可以正常发送

​ 后端知道 后端可以正常接受

​ 3. 前端接收到后端的 “包+包” 以后, 返回一个 “包+包+包” 给到后端

​ 前端知道 前端可以正常发送

​ 前端知道 前端可以正常接受

​ 前端知道 后端可以正常接受

​ 前端知道 后端可以正常发送

​ 后端知道 前端可以正常接受

​ 后端知道 后端可以正常发送

四次挥手

​ 1. 前端发送一个 “包” 给到后端

​ => 告诉他: “我接受到你的响应了, 可以准备断开了”

​ 2. 后端接受到前端的 “包”, 返回一个 “包+包1” 给回到前端

​ => 告诉前端: “我知道你接收到我的信息了, 我准备断开了”

​ 3. 后端再次返回一个 “包+包2” 给到前端

​ => 告诉前端: “我已经准备好断开了, 当我再次受到消息会直接断开, 不在回复”

​ 4. 前端接收到所有 “包” 以后, 返回一个 “最终包” 给到后端

​ => 高度后端: “我已经断开连接了, 别回了”

响应状态码(了解)

​ + 以一个数字的形式表示本次请求的状态(成功/失败)

分成五类

​ 1. 100 ~ 199 表示连接继续

​ 2. 200 ~ 299 表示各种成功

​ 3. 300 ~ 399 表示重定向

​ 304 缓存

​ 301 临时重定向

​ 302 永久重定向

​ 4. 400 ~ 499 表示各种客户端错误

​ 404 请求地址不存在

​ 403 请求地址权限不够

​ 5. 500 ~ 599 表示各种服务端错误

请求方式

​ + 前后端传递信息的方式

​ + 本质区别就是 语义化 的不一样

  1. GET 偏向于获取的语义

  2. POST 偏向于提交的语义

  3. PUT 偏向于提交的语义(偏向于提交插入)

  4. DELETE 偏向于获取的语义(偏向于删除)

  5. PATCH 偏向于提交的语义(偏向于提交修改)

  6. HEAD 偏向于获取的语义(就是为了获取响应头信息)

  7. OPTIONS 偏向于获取的语义(获取服务器信息, 需要服务器允许)

  8. CFONNECT 保留请求, 管道连接改为代理连接使用

GET 和 POST 的区别(熟读并背诵全文, 领会精神)

​ 1. 携带信息的位置

​ => GET: 直接拼接在地址栏后面(以查询字符串的方式)

​ => POST: 书写在请求体内

​ 2. 携带信息的格式

​ => GET: 只能是查询字符串格式

​ => POST: 不限制任何格式, 但是你要在请求头内的 content-type 信息说明

​ -> 查询字符串: application/x-www-form-urlencoded

​ -> json字符串: application/json

​ -> 二进制流: mutlipart/form-data

​ 3. 携带信息的大小

​ => GET: 2KB

​ => POST: 理论上不限制大小, 会被服务器限制

​ 4. 安全

​ => GET 相对不安全

​ => POST 相对安全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值