REST究竟是什么意思?它是什么,为什么它现在变大了?

时间:2008-10-28 13:50:40

标签: http rest

理解(我认为)RESTful-ness背后的基本理念。在语义上使用HTTP方法 - GET获取,PUT put,DELETE删除等等......对吗?认为我理解REST背后的想法,但我认为我对HTTP实现的细节感到困惑。休息背后的驱动理念是什么,为什么这成为一件重要的事情?人们实际上已经使用了很长时间,在我的手电筒从未照过的互联网的一角?

<小时/> Google Talk提到Atom Publishing Protocols与RESTful实现有很多协同作用。有什么想法吗?

5 个答案:

答案 0 :(得分:54)

这可能是REST的样子:

POST /user
fname=John&lname=Doe&age=25

服务器响应:

201 Created
Location: /user/123

将来,您可以检索用户信息:

GET /user/123

服务器响应(假设XML响应):

200 OK
<user><fname>John</fname><lname>Doe</lname><age>25</age></user>

更新:

PUT /user/123
fname=Johnny

答案 1 :(得分:18)

这是我的观点......

制作RESTful服务的吸引力在于,我们不是使用许多功能方法创建Web服务,而是标准化四种方法(创建,检索,更新,销毁):

  • POST
  • GET
  • PUT
  • DELETE

REST越来越受欢迎,因为它也代表了应用层的消息传递格式的标准化。虽然HTTP使用REST的四个基本动词,但HTML的常见HTTP消息格式不是构建应用程序的合同。

我听到的最好的解释是将TCP / IP与RSS进行比较。

以太网代表物理网络的标准化。 Internet协议(IP)代表堆栈中较高的标准化,并具有多种不同的风格(TCP,UDP等)。引入了“传输控制协议”(保证数据包传送)定义的通信合同,为应用层打开了一整套新的服务(FTP,Gopher,Telnet,HTTP)。

在类比中,我们采用XML作为“协议”,我们现在开始标准化消息格式。 RSS 正在迅速成为许多RESTful服务的基础。 Google的GData API是RSS / ATOM版本。

“桌面小工具”是这种炒作的一个很好的实现:一个简单的客户端可以使用通用的API和消息传递标准来使用基本的Web内容或复杂的mashup。

答案 2 :(得分:11)

HTTP目前使用不足且使用不当。

我们通常只使用两种HTTP方法:GET和POST,但还有一些方法:DELETE,PUT等(http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

因此,如果我们拥有由RESTful URL定义的资源(应用程序中的每个域对象都具有http://yoursite.com/path/to/the/resource形式的唯一URL)和正确的HTTP实现,我们可以通过编写句子来操作域中的对象:

获取http://yoursite.com/path/to/the/resource

删除http://yoursite.com/path/to/the/resource

POST http://yoursite.com/path/to/the/resource

架构很好,一切都很好。

但这仅仅是理论观点,现实场景在我之前的答案中发布的所有链接中都有描述。

答案 3 :(得分:10)

让我们回顾历史,谈谈罗伊菲尔丁研究 - “Architectural Styles and the Design of Network-based Software Architectures”。它是一篇大论文,讲述了很多不同的东西。但作为标准工程师您想如何解释REST(Representational State Transfer)的明确含义,以及它的建筑风格。

以下是我的解释方式 - “什么是REST”。

请参阅运行在各种硬件之上的此www(万维网),例如路由器,服务器,防火墙,云基础设施,交换机,LAN,WAN。这个www(万维网)的总体目标是分发hypermedia。这个万维网配备了各种服务,例如基于信息的服务,网站,YouTube频道,动态网站,静态网站。这个万维网使用HTTP协议通过客户端/服务器机制在全球范围内分发超媒体。此HTTP协议在TCP / IP或其他适当的网络堆栈之上工作。

这个HTTP protocol使用八种方法来管理“分配协议”或“分布式建筑风格”。这八种方法是:OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT。

但是在这个HTTP之上,Web应用程序正在使用自己的方式分发超媒体,例如Web应用程序正在使用与客户端和服务器高度相关的Web服务,或者'Web应用程序正在使用自己设计的客户端/服务器的方式在HTTP之上建立这种分发渠道的机制。

Roy Fielding Research说,这八种方法OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT是如此成功,可以在各种硬件资源的基础上向世界各地提供HyperMedia和客户/服务器机制的网络堆栈,为什么我们不使用类似的策略与我们的基于Web的应用程序。在这个GET上,POST,DELETE和PUT被最多使用。所以有四种方法可以将HyperMedia传递到全世界。

在REST API Architecture Style 应用程序中,Web应用程序需要设计业务逻辑(驻留在服务器中,例如Tomcat,Apache HTTP)和所有对象实体(例如,Customer一个实体)和可能的操作(例如,基于客户ID的'检索客户信息')。使用这些实体的那些可能的操作应该设计有四个主要操作或方法,即创建,检索,更新,删除。这些实体称为资源,这些实体以表格形式呈现代表 JSON或XML或其他东西。我们有客户端(浏览器)调用创建,检索,更新,删除(CRUD)方法来对服务器中的此类资源驻留执行适当的功能。

但正如 Representation 的概念所解释的那样,意味着业务逻辑或对象的实体的表示方式。但是“国家转移”怎么样?。

状态转移,它谈到了从客户端到服务器的“通信状态”。它讨论了从客户端到服务器的“状态转移”的设计,例如客户首先调用“创建客户”操作,在调用该客户的下一个状态或客户可以调用的客户状态之后。它的状态可能是“检索创建的客户数据”,“更新客户数据”或什么

答案 4 :(得分:5)

REST是一种定义和解决资源的架构。

要最好地理解REST,您应该查看Resource Oriented Architecture (ROA),它为实际实现REST架构提供了一套指导原则。

REST不需要通过HTTP,但它是最常见的。 REST最初是由HTTP的创建者之一创建的。