1.状态码的分类
1xx 服务器收到请求
2xx 请求成功,如200
3xx重定向,如302
4xx客户端错误,如404
5xx服务端错误,如500
2.常见状态码
200 请求成功
301永久重定向
302临时重定向
304资源未被修改
404资源没有找到
403没有权限
500服务器错误
3.现在的methods
get 获取数据
post 新建数据
patch/put 更新数据
delete 删除数据
4.Restful API
传统API把每一个url当作一个功能
RestfulAPI把每一个url当作一个唯一的资源
Restful尽量不用url参数,使用methods来表示操作类型
//传统API
/api/list?pageIndex=2
/api/list/2
post 请求 /api/create-blog
post 请求 /api/update-blog?id=100
get 请求 /api/get-blog?id=100
//Restful API
/api/list/2
post请求 /api/blog
patch请求 /api/blog/100
get请求 /api/blog/100
5.http headers
1.常见的Request headers
Accept 浏览器可接收的数据格式
Accept-Encoding 浏览器可接收的压缩算法,如gzip
Accept-Language浏览器可接收的语言,如zh-CN
Connection:keep-alive 一次TCP连接重复使用
cookie
host
User-Agent(简称UA)浏览器信息
Content-Type 发送数据格式,如application/json
2.常见的Response headers
Content-Type 返回的数据格式 如application/json
Content-length 返回数据的大小有多少字节
Content-Encoding 返回数据的压缩算法,如gzip
Set-cookie 服务端修改cookie的时候,把cookie改掉
3.缓存相关的headers
Cache-Control
Expires
Last-Modified
If-Modified-Since
Etag
If-None-Match
6.http缓存
1.哪些资源可以被缓存?
静态资源(js,css,img)
2.cache-control的值
cache-control在response-header中
max-age:缓存最大过期时间(单位:秒),之前使用的是expires属性值,现在基本已经被max-age代替
no-cache:不用本地缓存,正常的向服务器发起请求,让服务端处理
no-store:不用本地缓存,也不用服务器处理,直接让服务器发送请求的资源
private
public
3.协商缓存
是一种服务器端的缓存策略
服务器端判断资源是否与客户端的资源一样
如果一样,返回304,使用客户端资源,如果不一样,返回200和新的资源
在response header当中,有两种资源标识:
Last-Modified:资源的最后修改时间
1.初次请求,返回资源和Last-Modified
2.再次请求,request header中带着If-Modified-Since
3.返回304,或者返回新的资源和Last-Modified
Etag:资源的唯一标识(一个字符串,类似人类的指纹)
1.初次请求
2.返回资源和Etag
3.再次请求,request header中带着If-None-Match
4.返回304,或者返回新的资源和新的Etag
http缓存全过程
1.http请求
2.有缓存
3.缓存是否过期?
没有过期→读取缓存→强缓存→页面呈现
缓存已过期→判断有没有Etag和Last-Modified?
没有→向服务器发出http请求→服务器返回http资源→页面呈现
有→向服务器发起http请求,并且带有If-None-Match和If-Modified-Since字段
服务器判定客户端缓存是否可用?
不可用→200→返回新的资源
可用→304→读取缓存资源→协商缓存