Vanessa

大前端的点滴生活

REST

表象化状态转变(英文:Representational State Transfer,简称REST)是Roy Fielding博士在 2000 年他的博士论文中提出来的一种软件架构风格。

目前在三种主流的Web 服务实现方案中,因为 REST 模式的Web 服务与复杂的SOAPXML-RPC对比来讲明显的更加简洁,越来越多的 web 服务开始采用 REST 风格设计和实现。例如,Amazon.com提供接近 REST 风格的 Web 服务进行图书查找;雅虎提供的 Web 服务也是 REST 风格的。

宗旨

REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过 URI 来获取资源的表形。获得这些表形致使这些应用程序转变了其状态。随着不断获取资源的表形,客户端应用不断地在转变着其状态,所谓表形化的状态转变(Representational State Transfer)。

这一观点不是凭空臆造的,而是通过观察当前 Web 互联网的运作方式而抽象出来的。Roy Fielding 认为,



设计良好的网络应用表现为一系列的网页,这些网页可以看作的虚拟的状态机,用户选择这些链接导致下一网页传输到用户端展现给使用的人,而这正代表了状态的转变。

要点及标准

需要注意的是,REST 是一种设计风格而不是一个标准。REST 通常基于使用HTTPURI,和XML以及HTML这些现有的广泛流行的协议和标准。

  • 资源是由 URI 来指定。
  • 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应 HTTP 协议提供的 GET、POST、PUT 和 DELETE 方法。
  • 通过操作资源的表形来操作资源。
  • 资源的表现形式则是 XML 或者 HTML,取决于是读者是机器还是人,消费 web 服务的客户软件还是 web 浏览器。当然也可以是任何其他的格式。


REST 的要求


  • 客户端和服务器结构
  • 连接协议具有无状态性
  • 能够利用 Cache 机制增进性能
  • 层次化的系统
  • Code On Demand - Javascript


关于状态


应该注意区别应用的状态和连接协议的状态。REST 对于连接的无状态性实际上要求每次经过无状态的连接协议传送的信息必须包含应用中所有的状态信息。



实现举例


例如,一个简单的网络商店应用,


列举所有商品,


GET http://www.store.com/products

具体某一件商品,


GET http://www.store.com/product/12345

下单购买,


POST http://www.store.com/order,
<purchase-order>
<item> ... </item>
</purchase-order>


REST 的优点


  • 可以利用缓存 Cache 来提高响应速度
  • 通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
  • 浏览器即可作为客户端,简化软件需求
  • 相对与其他叠加在HTTP 协议之上的机制,REST 的软件依赖性更小
  • 不需要额外的资源发现机制
  • 在软件技术演进中的长期的兼容性更好


实现




参考资料



欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

留下你的脚步