http状态码
状态码分类
- 1xx 服务器收到请求
- 2xx 成功
- 3xx 重定向
- 4xx 客户端错误
- 5xx 服务器错误
常见状态码
- 200 成功
- 301 永久重定向
- 302 临时重定向
- 304 资源未修改过
- 404 未找到资源
- 403 没有权限
- 500 服务器内部错误
- 504 网关超时
http methods
常用methods
- get 获取数据
- post 新建数据
- patch/put 更新数据
- delete 删除数据
Restful API
- 一种新的API设计方法
- 传统API设计:把每个url当做一个功能
- Restful API设计:把每个url当做一个唯一的资源
如何设计成一个资源
- 尽量不用url参数
- 用methods表示操作类型
http headers
request headers
浏览器发送请求时,传递给服务端的信息
- Accept 浏览器可接收的数据类型
- Accept-Encoding 浏览器可接收的压缩算法,如 gzip
- Accept-Language 浏览器可接收的语言,如 zh-CN
- Connection: keep-alive 一次 TCP 连接重复使用
- cookie
- Host
- User-Agent 浏览器信息
- Content-type 发送数据的类型
response headers
- Content-Type 返回的数据类型,对应 Accept
- Content-Length 数据大小
- Content-Encoding 压缩算法,如 gzip ,对应 Accept-Encoding
- Set-Cookie
自定义header
有些接口需要前端调用时,加一些自定义的header
http缓存
什么是缓存
缓存,即某些情况下,资源不是每次都去服务端获取,而是第一次获取后缓存下来,下次再请求时,直接读取本地的缓存,而不再去服务端请求
为什么需要缓存
核心需求,让网页更快的显示出来,提高性能
哪些资源需要缓存
对一个网页来说
- html页面不能缓存
- 业务数据不能缓存
- 静态资源可以缓存
缓存策略-强制缓存,客户端缓存
Cache-Control表示该资源,被再次请求时的缓存情况。
max-age:31536000单位是 s ,该资源被强制缓存 1 年no-cache不使用强制缓存,但不妨碍使用协商缓存(下文会讲)no-store禁用一起缓存,每次都从服务器获取最新的资源private私有缓存(浏览器级缓存)public共享缓存(代理级缓存)
缓存策略-协商缓存(对比缓存),服务端缓存
当强制缓存失效后,请求会被发送到服务端。此时,服务端也不一定每次都要返回资源。如果客户端资源还有效的话 第一,Last-Modified(Response Headers)和 If-Modified-Since(Request Headers)
- Last-Modified 服务端返回资源的最后修改时间
- If-Modified-Since 再次请求时带着最后修改时间
- 服务器根据时间判断资源是否被修改(如未被修改则返回 304,失败则返回新资源和新的缓存规则)
第二,Etag(Response Headers)和 If-None-Match(Request Headers)
- Etag 服务端返回的资源唯一标识(类似人的指纹,唯一,生成规则由服务器端决定,结果就是一个字符串)
- If-None-Match 再次请求时带着这个标识
- 服务端根据资源和这个标识是否 match (成功则返回 304,失败则返回新资源和新的缓存规则)
Last-Modified和Etag
- 如果两者一起使用,则优先使用ETag规则
- Last-Modified只能精确到秒级别
- 如果资源被重复生成,而内容不变,则Etag更精确