概念

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的区别

Next

各种转换 编码、加密、Hash、序列化、字符集