HTTP基础

状态码…..

常见的状态吗有很多,我列举几个:

200 代表 OK,服务器处理了请求。201 代表已接收,一般是异步接口返回,表达请求已经收到了,但是不一定处理好了。

301 代表永久重定向,302 代表临时重定向

400 是请求有问题,401 是未授权,403 是禁止访问。

500 是系统错误,503 是服务不可用,在触发了熔断的时候可以返回 503。

缓存

Http缓存分为两种,一种是那个强制缓存,一种是协商缓存

强制缓存指的是只要浏览器的缓存没过期,那就使用缓存,决定是否使用缓存的决定权在浏览器这边

浏览器第一次请求服务器的时候,服务器返回请求的同时会在请求头里塞Cache-control这个参数,

这个参数注明了缓存的过期时间

浏览器再次请求时,会先根据请求的时间和Cache-control 计算出缓存是否过期,如果没有就直接访问

本地缓存,如果过期就发请求

服务器收到请求后,会更新请求头里的Cache-control

协商缓存

就是通过服务端协商后,通过协商结果判断是否使用本地缓存

报文格式:

HTTP请求报文由四部分组成:

第一部分是请求行,包含请求方法、URI和HTTP版本,如GET /index.html HTTP/1.1;

第二部分是请求头部,它包含一系列键值对,传递附加信息,如Host: example.com;

第三部分是空行,用来分隔头部和主体请求体;

第四部分是请求体,这一部分是可选的,通常用来传递请求的具体内容;

响应报文也是类似的。第一个部分是状态行,包含HTTP版本、状态码和状态消息,如HTTP/1.1 200 OK。后续依次是响应头部、空行和响应体。

请求方式

GET 和 POST 是用得最多的两个方法。

GET 主要用来访问服务器上的资源,并不改变资源的状态。而 POST 则是主要用于向服务端提交数据,更新或者创建资源,但是 POST 可以不是幂等的。

除了这些,PUT 可以用来表达更新或者创建资源,但是操作应该是幂等的,大多数情况下是整体更新。PATCH 也是更新资源,但是一般是代表更新资源的一部分属性。DELETE 则是删除资源。

还有一个很特殊的 OPTIONS,一般是浏览器遇到跨域问题时候发送的预检(preflight)请求就是使用 OPTIONS 方法。

剩下的 HEAD,TRACE,CONNECT 方法就用得比较少了。

HTTP短连接,HTTP长连接

HTTP长连接和短连接主要区别在于TCP连接的持续时间和资源占用。长连接在一个TCP连接上可以发送多个HTTP请求和响应,通过Connection: keep-alive头部来维持连接,适用于频繁请求的场景,如加载多个资源的网页,减少了TCP握手的开销,提高了性能。

而短连接则在每次HTTP请求完成后立即关闭TCP连接,适用于简单查询或对资源占用敏感的场景,虽然每次请求都需要进行TCP握手,但资源释放快。

在 HTTP 1.1 以后就默认使用长连接了,如果没有遇到问题,就不要去修改这个配置。

简述

长连接高性能,短连接释放快

  • HTTP/TCP → 通信协议(规定如何传输数据)。
  • JSON/Protobuf → 数据序列化协议(规定数据内容怎么编码)。