这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
课程重点
- HTTP协议的基本定义
- HTTP协议主要特征
- HTTP协议发展历程
- HTTP协议的报文结构
初识HTTP协议
- Hyper Text Transfer Protocol 超文本传输协议
- 应用层协议,基于TCP协议
- 请求响应
- 简单可扩展
- 无状态
协议分析-发展
协议分析-报文
Method
- GET 请求一个指定资源的表示形式,使用GET的请求应该只被用于获取数据
- POST 用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用
- PUT 用于请求有效载荷替换目标资源的所有当前表示
- DELETE 删除指定的资源
- HEAD 请求一个与GET请求的响应相同的响应,但没有响应体
- CONNECT 建立一个到由目标资源的通信选项
- OPTIONS 用于描述目标资源的通信选项
- TRACE 沿着到目标资源的路径执行一个消息环回测试
- PATCH 用于对资源应用部分修改
Safe(安全的):不会修改服务器的数据的方法,如,GET、HEAD、OPTIONS
Idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的
所有safe的方法都是Idempotent的,如,GET、HEAD、OPTIONS、PUT、DELETE
状态码
RESTful API
RESTful API:一种设计风格;REST-Representational StateTransfer
- 每一个URI代表一种资源
- 客户端和服务器之间,传递这种资源的某种表现层
- 客户端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”
常用请求头
缓存
- 强缓存
- 协商缓存
cookie
HTTP/2概述
HTTP/2概述:更快、更稳定、更简单
- 帧:HTTP/2通信的最小单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流
- 消息:与逻辑请求或响应消息对应的完整的一系列帧
- 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息
- HTTP/2连接都是永久的,而且仅需要每个来源一个连接
- 流控制:阻止发送方向接收方发送大量数据的机制
- 服务器推送
HTTPS
- HTTPS:Hypertext Transfer Protocol Secure
- 经过TSL/SSL加密
- 对称加密:加密和解密都是使用同一个密钥
- 非对称加密,加密和解密需要使用两个不同的密钥:公钥和私钥
HTTP吸引的场景分析
静态资源
什么是跨域
实战
浏览器篇 AJAX之Fetch
- XMLHttpRequent的升级版
- 使用Promise
- 模块化设计,Response、Request、Header
- 通过数据流处理对象,支持分块读取
node篇
- 默认模块,无需安装其它依赖
- 功能有限/不是十分友好
常用的请求库:axios
- 支持浏览器、nodejs环境
- 丰富的拦截器
网络优化
稳定性
扩展-通信方式
WebSocket
- 浏览器与服务器进行全双工通讯的网络技术
- 典型场景:实时性要求高,例如聊天室
- URL 使用 ws:// 或 wss:// 等开头
总结
在正式讲解 Http 协议的技术细节前,本节课了解了 Http 协议的基本定义和特点,在此基础上,对于 Http 协议的发展历程及报文结构展开进一步分析。
在本节课中学习了 HTTP 真实的场景实践,以「今日头条」浏览器为例,展示线上的 demo,对于该案例涉及的请求中的缓存策略展开具体分析。
在对 HTTP 协议的定义及使用场景解析的讲解完成后,本节课将根据不同的环境,学习在日常的开发中,如何实现去发起一个协议,将重点带来浏览器环境的应用实战,进一步基于不同环境下,如何做到网络优化,提升用户体验。