什么是HTTP
HTTP(Hypertext Transfer Protocol),超⽂本传输协议,和HTML (HypertextMarkup Language超⽂本标记语⾔)⼀起诞⽣,⽤于在⽹络请求和传输HTML内容。超⽂本,即「扩展型⽂本」,指的是HTML中可以有链向别的⽂本的链接(hyperlink)。是属于网络的应用层
image.png
HTTP的工作方式
⽤户输⼊地址后回⻋或点击链接 -> 浏览器拼装 HTTP 报⽂并发送请求给服务器 -> 服务器处理请求后发送响应报⽂给浏览器 -> 浏览器解析响应报⽂并使⽤渲染引擎显示到界⾯
HTTP的工作模型
- 客户端组装报文发送给服务端----->服务端接收报文,处理报文后返回响应报文给客户端----->客户端处理返回响应报文
HTTP请求报文格式:请求行、Headers、Body
请求行>>> POST http://xxxxx.com:8080/api/adminuser http/1.1
Headers>>> Content-Type: application/json; charset=UTF-8
Headers>>> Content-Length: 26
Body >>> {"userName":"15770828256"}
> END POST (26-byte body)
请求行:Method ,Path ,HTTP version (GET /users HTTP/1.1)
- Method:POST,GET,PUT,DELETE
POST和GET方法的区别
- 从缓存的角度,GET 请求会被浏览器主动缓存下来,留下历史记录,而 POST 默认不会。
- 从编码的角度,GET 只能进行 URL 编码,只能接收 ASCII 字符,而 POST 没有限制。
- 从参数的角度,GET 一般放在 URL 中,因此不安全,POST 放在请求体中,更适合传输敏感信息。
从幂等性的角度,GET是幂等的,而POST不是。(幂等表示执行相同的操作,结果也是相同的) - 从TCP的角度,GET 请求会把请求报文一次性发出去,而 POST 会分为两个 TCP 数据包,首先发 header 部分,如果服务器响应 100(continue), 然后发 body 部分。(火狐浏览器除外,它的 POST 请求只发一个 TCP 包)
Headers
- HOST:主机地址
- Content-Type: Body的内容类型/Body的长度 (application/json; charset=UTF-8)
- Location:重定向的目标 URL
- User-Agent:用户代理
- Range / Accept-Range:指定 Body 的内容范围
- Cookie / Set-Cookie:发送 Cookie / 设置 Cookie
- Authorization:授权信息
- Content-Encoding:压缩类型。如 gzip
- Accept-Encoding: 客户端接受的压缩编码类型。如 gzip
- Accept-Charset: 客户端接受的字符集。如 utf-8
- Accept: 客户端能接受的数据类型。如 text/html
Body
- 要发送给服务端内容
HTTP响应报文格式:状态行、Headers、Body
<-- 200 OK http://tewang88.com:8080/api/adminuser
Content-Length: 701
Content-Type: application/json; charset=utf-8
{"result":"成功","code":0,"msg":"sucess"}
- Status Code: 1xx(信息)、2xx(成功)、3(重定向)、4(客户端错误)、5(服务器错误)