`
brofe
  • 浏览: 231790 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

REST是一种设计风格而不是一个标准

    博客分类:
  • Java
阅读更多
转载自:维基百科(http://zh.wikipedia.org/wiki/REST)。

表象化状态转变(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。
目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。

宗旨
REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表形。获得这些表形致使这些应用程序转变了其状态。随着不断获取资源的表形,客户端应用不断地在转变着其状态,所谓表形化的状态转变(Representational State Transfer)。
这一观点不是凭空臆造的,而是通过观察当前Web互联网的运作方式而抽象出来的。Roy Fielding 认为,

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

要点及标准
需要注意的是,REST是一种设计风格而不是一个标准。REST通常基于使用HTTP,URI,和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的软件依赖性更小
• 不需要额外的资源发现机制
• 在软件技术演进中的长期的兼容性更好

详情请见,InfoQ(深入浅出REST)http://www.infoq.com/cn/articles/rest-introduction
分享到:
评论

相关推荐

    为何在云平台中使用REST作为架构设计风格

    REST(Representational State Transfer)架构风格是一种基于Web标准的软件架构,它将网络中的任何资源都抽象为可以寻址的实体,每个资源都拥有统一的接口。它包括如下特点: - 可寻址性(Addressability):每个...

    REST风格的XCAP协议

    REST(Representational State Transfer,表述性状态转移)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,用于构建可伸缩、高性能的Web服务。XCAP(eXtensible CAPacity,可扩展的能力协议)是REST风格的...

    REST与SOA两种架构

    REST是一种架构风格,由Roy Fielding在2000年他的博士论文中提出,主要应用于Web服务设计。它基于HTTP协议,强调资源的识别和交互,通过URI(统一资源标识符)来定位资源,使用HTTP方法如GET、POST、PUT、DELETE等...

    架构风格与基于网络的软件架构设计(REST)

    REST是一种针对网络应用的分布式超媒体系统提出的设计风格,它借鉴了Web的工作原理,使用HTTP协议进行通信,并且强调无状态通信和资源的统一接口。在REST架构中,资源是被命名和定位的核心元素,通过HTTP方法如GET、...

    rest风格webservice

    REST(Representational State Transfer,表述性状态转移)是一种软件架构风格,主要应用于网络应用程序设计,尤其是Web服务。它强调简洁、无状态和基于标准的接口,使得不同的系统间能够轻松进行交互。REST风格的...

    什么是REST,符合REST的API叫RESTful 两种SOA接口实现:SOAP(WebService) vs REST

    SOA(Service-Oriented Architecture)是一种面向服务的架构风格,它将业务逻辑组织为一组可重用的服务,这些服务之间通过标准接口进行通信。SOAP和REST都是实现SOA接口的常见方式,但在灵活性和性能方面,REST通常...

    面向服务的架构SOA分为2种 SOAP即Webservice和REST

    面向服务的架构(Service-Oriented Architecture,简称SOA)是一种设计原则,它提倡将复杂的系统分解为一组可重用的服务,这些服务可以独立部署、管理和集成。在SOA的世界里,服务是业务功能的最小单元,它们通过...

    用于创建 REST风格系统的框架

    **面向服务架构 (SOA)** 是一种设计思想,其核心是将系统划分为一系列松散耦合的服务,这些服务通过明确定义的接口进行通信。SOA 允许组件通过简单的接口创建,并且每个组件执行一系列包含相关功能的独立集合。例如...

    用WCFWebAPI在MVC3.0下实现REST

    REST翻译成中文就是:“表述性状态转移”:Representational State Transfer,是网络服务接口的一种风格,并不是一个标准。 REST常用的四种HTTP命令,GET、DELETE、PUT和POST。 GET:是获取资源,DELETE: 是删除...

    Drest一个将Doctrine实体暴露为REST资源节点的库

    REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,主要用于分布式系统间的通信,尤其是 Web 应用。RESTful API 设计的核心原则是资源和状态的转移,通过 HTTP 方法来操作资源,比如...

    REST实战中文版(有目录)

    REST(Representational State Transfer)是一种软件架构风格,它定义了一组约束条件和属性,以指导如何构建Web服务。 在了解REST实战之前,我们需要明确REST架构风格的基本原则。首先,REST是基于资源的,意味着...

    REST实战(REST in Practice)

    - **REST (Representational State Transfer)**:一种软件架构风格,用于描述基于网络的应用程序如何工作。REST的核心理念是通过简单的HTTP方法(如GET、POST、PUT、DELETE等)来操作资源。 - **RESTful服务**:遵循...

    REST WebService简单应用

    REST(Representational State Transfer,表述性状态转移)是一种软件架构风格,主要应用于Web服务的设计,以提供简洁、无状态、基于标准的接口。REST Web Service是遵循REST原则的Web服务,它通过HTTP协议来实现...

    dubbox 2.8.4 rest调用

    REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以JSON或XML格式传输数据,广泛用于分布式系统中的服务调用。 【描述】"能运行"表明这个项目提供了完整的运行环境...

    soap和rest的应用flickr(一个照片管理网站的源代码)

    而REST是一种轻量级的架构风格,其核心思想是资源(Resource)和状态转移(State Transfer)。REST的主要特点包括: 1. **简单**:使用HTTP协议中的GET、POST、PUT、DELETE等方法来操作资源。 2. **无状态**:每次...

Global site tag (gtag.js) - Google Analytics