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 → 数据序列化协议(规定数据内容怎么编码)。