REST是什么
- 万维网软件架构风格(Representational State Transfer)
- Representational: 数据的表现形式(JSON、XML)
- State: 当前状态或者数据
- Transfer: 数据传输
REST 的 6 个限制
客户端-服务器(Client-Server)
- 专注点分离
- 服务端专注数据存储,提升了简单性,服务端代码更加简单
- 前端专注用户界面,提升了可移植性
无状态(Stateless)
- 所有用户会话信息都保存在客户端
- 每次请求必须包括所有信息,不能依赖上下文信息
- 服务端不用保存会话信息,提升了简单性、可靠性、可见性
- 可靠性,如果服务端管理会话信息,一旦服务端故障可能会丢失所有信息,并不可靠
- 可见性,模块接口的透明程度,每次请求都携带,接口信息就是可见性更高了
缓存(Cache)
- 所有服务端响应都要被标志为可缓存或不可缓存
- 减少前后端交互,提升了性能
统一接口(Uniform Interface)
- 接口设计尽可能统一通用,提升简单性、可见性
- 接口与实现解耦,是前后端可以独立开发
分层系统(Layered System)
- 每层只知道相邻的一层,后面隐藏的就不知道了
- 客户端不知道是和代理还是真实服务器通信
- 其他层:安全层、负载均衡、缓存层等
- 安全层,提前终止掉一些不合理请求
- 负载均衡,网站访问量比较大,用来管理流量的分发
- 缓存层,一般缓存一些静态文件
按需代码(Code-On-Demand 可选)
- 客户端可以下载运行服务端传来的代码
- 通过减少一些功能,简化了客户端