一、状态码

  • 1xx - 服务器收到请求
  • 2xx - 表示成功处理请求,如:200
  • 3xx - 需要重定向(配合Location,浏览器直接跳转)
    • 301 - 永久重定向
    • 302 - 临时重定向
    • 304 - 资源未改变,浏览器会使用缓存
  • 4xx - 客户端请求错误
    • 403 - 客户端无权限
    • 404 - 请求地址错误
  • 5xx - 服务器端错误
    • 500 服务器错误
    • 504 网关超时

二、Methods

  • get - 获取数据
  • post - 新建数据
  • patch/put - 更新数据
  • delete - 删除数据

三、Restful-API

Restful API 是一种新的 API 设计方法

  • 传统 API 设计:把每个 url 当作一个功能
  • Restful API 设计:把每个 url 当作一个唯一的资源

API 可用下面两种方式设计成一个资源

  1. 尽量不用 url 参数

传统的 API 设计:/api/list?pageIndex=2
Restful API 设计:/api/list/2

  1. 用 method 表示操作类型

传统的 API 设计:

  • get 请求(查):/api/get-blog?id=100
  • post 请求(增):/api/create-blog
  • post 请求(改):/api/update-blog?id=100

Restful API 设计:

  • get 请求(查):/api/blog/100
  • post 请求(增):/api/blog
  • patch 请求(改):/api/blog/100

四、Http Headers

1、通用

  • Cache-Control:控制强制缓存的逻辑

2、Request Headers

  • Accept:浏览器可接收的数据格式
  • Accept-Encoding:浏览器可接收的压缩算法,如 gzip
  • Accept-Languange:浏览器可接收的语言,如 zh-CN
  • Connection:keep-alive 一次 TCP 连接重复使用
  • Cookie
  • Host:请求服务器的域名
  • User-Agent(简称 UA)浏览器信息
  • Content-type:发送数据的格式,如 application/json

3、Response Headers

  • Content-type:返回数据的格式,如 application/json
  • Content-length:返回数据的大小,多少字节
  • Content-Encoding:返回数据的压缩算法,如 gzip
  • Set-Cookie:服务端修改 Cookie
  • Expires:内容过期时间
  • Last-Modified:资源的最后修改时间
  • Etag:资源的唯一标识

五、缓存

http缓存.png

1、强制缓存

强制缓存逻辑图如下:
强制缓存.png
Cache-Control :

  • max-age:最大缓存时间
  • no-cache:不强制缓存
  • no-store:不缓存(包括强制缓存和协商缓存)
  • private:只允许最终用户做缓存,如 电脑、浏览器、手机等
  • public:允许中间路由和代理也能缓存

Expires:旧的缓存标识方式,设置过期时间

2、协商缓存

协商缓存是一个服务端的缓存策略

  1. 服务端判断客户端资源,是否和服务端资源一样
  2. 一致则返回 304,否则返回 200 和最新的资源

协商缓存.png
其中常用的资源标识有(服务端返回):

  • Last-Modified:资源的最后修改时间
  • Etag:资源的唯一标识

客户端请求时,它们携带的资源标识分别是:

  • If-Modified-Since:值与 Last-Modified 相同
  • If-None-Match:值与 Etag 相同

3、刷新操作

  • 正常操作:地址栏输入 url、跳转链接、前进后退(强制缓存有效、协商缓存有效)
  • 手动刷新:F5、点击刷新按钮、右键菜单刷新(强制缓存失效、协商缓存有效)
  • 强制刷新:ctrl + F5(强制缓存失效、协商缓存失效)