rest规范在B/S架构基础上增加了3个新规范:
- 统一接口
- rest架构风格地核心特征就是强调组件之间有一个统一的接口,表现为在rest世界里,网络上的所有事物都被抽象为资源,rest通过通用的链接器接口对资源进行操作。这样设计的好处是保证系统提供的服务都是解耦的,可极大简化系统,改善系统的交互性和可重用性。
- 分层系统
- 分层系统规则的加入提高了各层次之间的独立性,为整个系统的复杂性设置了边界,通过封装遗留的服务,使新服务器免受遗留客户端的影响,也提高了系统的可伸缩性
- 按需代码
- rest允许对客户端的功能进行扩展。比如,通过下载并执行 applet或脚本形式的代码来扩展客户端的功能。但这在改善系统可扩展性的同时降低了可见性,所以它只是rest的一个可选约束。
rest架构是针对web应用设计的。目的是降低开发的复杂度,提高系统的可伸缩性。
rest提出了如下设计准则:
- 网络上的所有事物都被抽象为资源(Resource)
- 每个资源都对应唯一的资源标识符(Resource Identifier)
- 通过通用的链接器接口(Generic Connector Interface)对资源进行操作
- 对资源的各种操作都不会改变资源标识符
- 所有操作都是无状态的(Stateless)
rest中的资源指的不是数据,而是数据和表现形式的组合,比如“最新访问的10位会员”和“最活跃的10位会员”在数据上可能有重叠或完全相同,而它们的表现形式不同,被归为不同的资源,这也是为什么rest的全名是Representational State Transfer。
资源标识符就是URI,不管是图片、word还是视频文件,甚至只是一种虚拟服务,也不管是xml,txt还是其他文件格式,全部通过uri对资源进行唯一标识。
kubernetes api也符合RESTful规范