概念
Hyper Text Transfer Protocol 超文本传输协议。
原理
工作方式
客户端发送请求报文,服务端响应并返回HTTP响应报文。
数据格式
请求报文:
- 请求行 - method path HTTP version Get /login?token=xxx HTTP/1.1
- 首部 Headers - Host:api.github.com Content-Type:text/plain Content-Length:243
- 请求体 Body - xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx
响应报文:
- 状态行 - HTTP version status code status massage HTTP/1.1 200 OK
- 首部 Headers 
- 响应体 Body 
Request Method
- GET 
 获取资源,无Request Body
- POST 
 增加或修改资源,有Request Body
- PUT 
 修改资源,有Request Body
- DELETE 
 删除资源,无Request Body
- HEAD 
 获取资源,无Response Body
Response Status Code
对结果进行类型化描述(如 获取成功 内容未找到)
- 1XX 临时性消息 
- 2XX 成功 
- 3XX 重定向 
- 4XX 客户端错误 
- 5XX 服务器错误 
Headers
作用:HTTP消息的元数据(metadata)
- Host:服务器主机地址
- Content-Length:内容的长度(字节)
- Content-Type:内容的类型- text/html:html文本,用于浏览器页面响应
- application/x-www-form-urlencoded:普通表单,encoded URL格式
- multipart/form-data:多部分形式,一般用于传输包含二进制内容的图像内容
- application/json:json形式,用于Web Api的响应或POST/PUT请求
- image/jpeg/application/zip…:单文件,用于Web Api响应或POST/PUT请求
 
- Location:重定向的目标URL
- User-Agent:用户代理
- Range/Accept-Range:指定Body的内容范围
- Cookie/Set-Cookie:发送Cookie/设置Cookie
- Authorization:授权信息
- Accept:客户端能接受的数据类型。如text/html
- Accept-Charset:客户端接受的字符集。如uft-8
- Accept-Encoding:客户端接受的压缩编码类型。如gzip
- Content-Encoding:压缩类型。如gzip
- Cache-Control:no-cache、no-store、max-ages;private/public
- Last-Modifided:最后修改时间- If-Modifided-Since
 
- Etag:指纹、快照- If-None-Match
 
Body
知识补充
HTTP版本号: HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2.0
HTTP/2.0 相较于HTTP/1.0 格式差别很大 但是本质上差别不大 主要是HTTP/2.0对文本格式的数据进行了压缩。
幂等性:幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。 这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。
Cache:Cache和Buffer的区别
