HTTP实用指南学习笔记 | 青训营笔记

171 阅读3分钟

HTTP实用指南学习笔记 | 青训营笔记

这是我参与「第四届青训营 」笔记创作活动的第5天

初识HTTP

  • HTTP全称超文本传输协议(Hyper Text Transfer Protocol)

  • HTTP属于计算机网络,OSI七层模型中的应用层,基于TCP协议。

  • HTTP包含请求与响应两个过程。

  • HTTP可在Header中自定义数据,具有简单可扩展的特点。

  • HTTP不知道上一次传输的数据内容,具有无状态的特点

协议分析

  • HTTP/0.9 单行协议:响应中只有HTML文档
  • HTTP/1.0 构建可扩展性:增加了Header,状态码,支持多种文档类型
  • HTTP/1.1 标准化协议:链接复用、缓存、内容协商
  • HTTP/2 更优异的表现:二进制协议、压缩Header、服务器推送

报文

请求报文响应报文
GET / HTTP/1.1HTTP/1.1 200 OK
Host: lcoalhost:8080
Accept: text/html
Accept-Language: en-US,en;
Server: Nginx
Content-type: text/html; charset: utf-8
Content-length: 19

<!DOCTYPE HTML ...

以上是get请求的简单报文。

Method描述
GET请求某一指定资源
PSOT讲实体提交到某一特定资源
PUT用请求有效荷载替换目标资源的所有当前表示
DELETE删除某一资源
HEAD请求一个与GET请求的响应相同的响应,但没有响应体
CONNECT建立一个到目标资源标识的服务器的隧道
OPTIONS用于描述目标资源的通信选项
TRACE沿着到目标资源的路径执行一个消息回环测试
PATCH用于对资源应用部分修改

请求的特点:

Safe(安全的):不会修改服务器数据的方法,如:GET HEAD OPTIONS

Idempotent(幂等):同样的请求被执行一次与连续执行多次效果相同,服务器状态也相同的所有safe的方法都是Idempotent的

如: GET HEAD OPTIONS PUT DELETE

状态码:

状态码描述
1XX指示信息,表示请求已接收
2XX成功,表示请求已被成功接收
3XX重定向,完成请求需更进一步的操作
4XX客户端错误,请求出现问题
5XX服务器端错误,服务器未能实现合法请求

RESTful API

API设计风格

  1. 每个URI代表一种资源
  2. 客户端和服务器之间,传递这种资源的某种表现层
  3. 客户端通过http方法,对服务器端资源进行操作,实现”表现层状态转化“
请求返回码
GET /ResPath200 OK
POST /ResPath201 CREATED
PUT /ResPath/ID400 INVALID REQUEST
DELETE /ResPath/ID204 NO CONTENT

缓存

强缓存协商缓存
Expires时间戳Etag/If-None-Match: 资源的特定版本标识符
Cache-ControlLast-Modified/If-Modified-Since: 最后修改时间

当浏览器发起Get请求后,会首先检查是否有缓存,如果有,会继续判断强缓存是否新鲜,若是则读取缓存,否则进入协商缓存判断。

发展

HTTP/2 概述:更快、更稳定、更简单

帧(frame):帧是HTTP/2通信的最小单位,每个帧包含帧头。至少会标识当前帧所属数据流

消息:与逻辑请求或响应信息对应的完整的一系列帧。

数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。

流控制:阻止发送方向接收方发送大量数据的机制。

HTTPS概述

HTTPS:Hypertext Transfer Protocol Secure

经过了TSL/SSL加密

两种加密方式:

  • 对称加密:加密与解密使用同一密钥
  • 非对称加密:加密和解密需要使用两个不同的密钥,分为公钥与私钥

总结

  1. http请求分为请求头,请求体,空行
  2. http响应也分为请求头,请求体,空行
  3. http协议建立于tcp/ip协议之上
  4. http是一种超文本传输协议,在其之上有https,也就是对http明文的加密传输
  5. 在http请求中,请求体不一定存在,如get请求