概念
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 BodyPOST
增加或修改资源,有Request BodyPUT
修改资源,有Request BodyDELETE
删除资源,无Request BodyHEAD
获取资源,无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的区别