REST(Representational State Transfer)简介

转载 2015年07月07日 15:50:22
REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。

它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。


五条关键原则列举如下:
1.为所有“事物”定义ID
在Web中,代表ID的统一概念是:URI。URI构成了一个全局命名空间,使用URI标识你的关键资源意味着它们获得了一个唯一、全局的ID。
标识所有值得标识的事物,领会这个观念可以进一步引导你创造出在传统的应用程序设计中不常见的资源:
一个流程或者流程步骤、一次销售、一次谈判、一份报价请求——这都是应该被标识的事物的示例。同样,这也会导致创建比非RESTful设计更多的持久化实体。
对此原则总结如下:使用URI标识所有值得标识的事物,特别是应用中提供的所有“高级”资源,无论这些资源代表单一数据项、数据项集合、虚拟亦或实际的对象还是计算结果等。


2.将所有事物链接在一起
正式描述:“超媒体被当作应用状态引擎(Hypermedia as the engine of application state)”。这个描述的核心是超媒体概念,换句话说:是链接的思想。
超媒体原则还有一个更重要的方面——应用“状态”。
简而言之,实际上服务器端(如果你愿意,也可以叫服务提供者)为客户端(服务消费者)提供一组链接,使客户端能通过链接将应用从一个状态改变为另一个状态。
只需要记住:链接是构成动态应用的非常有效的方式。
对此原则总结如下:任何可能的情况下,使用链接指引可以被标识的事物(资源)。也正是超链接造就了现在的Web。


3.使用标准方法
在前两个原则的讨论中暗含着一个假设:接收URI的应用程序可以通过URI明确地做一些有意义的事情。
在HTTP中这被叫做动词(verb),除了两个大家熟知的(GET和POST)之外,标准方法集合中还包含PUT、DELETE、HEAD和OPTIONS。
你可以依此使用GET方法检索一个表述(representation)——也就是对资源的描述。
GET方法具有幂等性[译注:指多个相同请求返回相同的结果]
幂等性同样适用于PUT(基本的含义是“更新资源数据,如果资源不存在的话,则根据此URI创建一个新的资源”)和DELETE(你完全可以一遍又一遍地操作它,直到得出结论——删除不存在的东西没有任何问题)方法。
POST方法,通常表示“创建一个新资源”,也能被用于调用任意过程,因而它既不安全也不具有幂等性。
总结如下:为使客户端程序能与你的资源相互协作,资源应该正确地实现默认的应用协议(HTTP),也就是使用标准的GET、PUT、POST和DELETE方法。


4.资源多重表述
资源多重表述还有着其它重要的好处:如果你为你的资源提供HTML和XML两种表述方式,那这些资源不仅可以被你的应用所用,还可以被任意标准Web浏览器所用。
总结:针对不同的需求提供资源多重表述。


5.无状态通信
虽然REST包含无状态性(statelessness)的观念,但这并不是说暴露功能的应用不能有状态。
服务器端不能保持除了单次请求之外的,任何与其通信的客户端的通信状态。
这样做的最直接的理由就是可伸缩性—— 如果服务器需要保持客户端状态,那么大量的客户端交互会严重影响服务器的内存可用空间(footprint)。

相关文章推荐

RESTful Representational State Transfer 表现层状态转化

说说WCF Rest [WCF REST] 一个简单的REST服务实例 RESTful        一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服...

REST - Representational State Transfer

1.1. Overview REST is an architectural style which is based on web-standards and the HTTP p...

REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式

REST,即REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。 REST提出了一些设...

REST(Representational State Transfer):表述性状态转移

REST(Representational State Transfer):表述性状态转移 概念:REST是一种跨平台、跨语言的架构风格。 1)在REST架构风格中,对象被抽象为一种资源,表述...
  • A__17
  • A__17
  • 2017年02月27日 23:23
  • 219

REST(Representational State Transfer表述性状态转移)

rest,即REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。   REST提出了...
  • Koupoo
  • Koupoo
  • 2011年09月19日 09:58
  • 341

REST Representational State Transfer (REST)

Representational State Transfer (REST) 原文位置:http://www.ics.uci.edu/~fielding/pubs/dissertation/rest...
  • rocLv
  • rocLv
  • 2011年12月08日 09:18
  • 667

学习什么是RESTful(Representational State Transfer)(原创+转载)

今天在看OpenStack的一篇论文中发现了一个词RESTful,之前看书的时候也发现过这个词几次,并没有深入的了解过,趁今天这个机会好好查一下,作此记录,可能也不会看得很懂,慢慢再理解。      ...

Representational State Transfer

Representational State Transfer 简称REST:是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。 目前在三种主流的W...

dbms_file_transfer使用简介

dbms_file_transfer这个包可以在两个位置传输文件,分别可以有
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:REST(Representational State Transfer)简介
举报原因:
原因补充:

(最多只允许输入30个字)