REST改善了用户接口跨多个平台的可移植性,并且通过简化服务器组件,改善了系统的可伸缩性。最为关键的是通过分离用户接口和数据存储这两个关注点,使得不同用户终端享受相同数据成为了可能。
1.无状态性
无状态性是在客户、服务器约束的基础上添加的又一层规范。它要求通信必须在本质上是无状态的,即从客户到服务器的每个request都必须包含理解该request所必需的所有信息。这个规范改善了系统的可见性(无状态性使得客户端和服务器端不必保存对方的详细信息,服务器只需要处理当前request,而不必了解所有的request历史)、可靠性(无状态性减少了服务器从局部错误中恢复的任务量)以及可伸缩性(无状态性使得服务器端可以很容易地释放资源,因为服务器端不必在多个request中保存状态)。同时,这个规范的缺点也是显而易见的,由于不能将状态数据保存在服务器的共享上下文中,因此增加了在一系列request中发送重复数据的开销,严重地降低了效率。
2.缓存
为了改善无状态性带来的网络低效性,所以增加了缓存约束。缓存约束允许隐式或显式地标记一个response中的数据,这样就赋予了客户端缓存response数据的功能,这样就可以为以后的request共用缓存的数据,部分或全部地消除交互,增加了网络的效率。但是客户端缓存了信息,也就同时增加了客户端与服务器端数据不一致的可能,从而降低了可靠性。
3.统一接口
REST架构的核心特征就是强调组件之间有一个统一的接口,这表现为在REST世界里,网络上所有的事物都被抽象为资源,而REST通过通用的链接器接口对资源进行操作。这样设计的好处是保证系统提供的服务都是解耦的,极大地简化了系统,从而改善了系统的交互性和可重用性。并且,REST针对Web的常见情况做了优化,使得REST接口被设计为可以高效地转移大粒度的超媒体数据,因此REST接口对其他架构来说并不是最优的。(www.xing528.com)
4.分层系统
分层系统规则的加入提高了各种层次之间的独立性,为整个系统的复杂性设置了边界,通过封装遗留的服务,使新的服务器免受遗留客户端的影响,这也就提高了系统的可伸缩性。
5.按需代码
REST允许对客户端功能进行扩展。例如,通过下载并执行Applet或脚本形式的代码来扩展客户端功能。但这在改善系统可扩展性的同时,也降低了可见性。所以它只是REST的一个可选的约束。
6.REST规范接口
每个资源都有对应的URI,不同的HTTPMethod对应对资源不同的操作:GET(读取资源信息)、POST(添加资源)、PUT(更新资源信息)、DELETE(删除资源)。几乎所有的计算机语言都可以通过HTTP同REST服务器通信。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。