什么是REST?有点困惑

时间:2011-01-11 23:40:11

标签: rest

我假设REST是一个Web服务但似乎我认为这是错误的 - 所以,什么是REST?

我读过维基百科,但仍然无法完全理解它。为什么要做很多地方将API称为REST API?

5 个答案:

答案 0 :(得分:116)

REST不是特定的Web服务,而是用于管理状态信息的设计概念(体系结构)。关于这方面的开创性论文是Roy Thomas Fielding的论文(2000),“建筑风格和基于网络的软件架构设计”(加利福尼亚大学欧文分校available online)。

首先阅读Ryan Tomayko的帖子How I explained REST to my wife;这是一个很好的起点。然后阅读菲尔丁的实际论文。它不是那么高级,也不长(六章,180页)! (我知道你在学校的孩子很喜欢它。)

编辑:我觉得尝试解释REST是没有意义的。它有许多概念,如可扩展性,可见性(无状态)等,读者需要掌握,理解这些概念的最佳来源是实际的论文。它比POST / GET等更多。

答案 1 :(得分:71)

REST是一种通常用于Web应用程序的软件设计模式。通俗地说,这意味着它是许多不同项目中常用的想法。它代表 REpresentational State Transfer 。 REST的基本思想是将服务器端的对象(如数据库表中的行)视为可以创建或销毁的资源。

最基本的REST思考方式是格式化Web应用程序的URL。例如,如果您的资源名为“posts”,那么:

/posts将是用户如何访问所有帖子以进行显示。

/posts/:id用户将如何访问和查看根据其唯一ID检索的单个帖子。

/posts/new您将如何显示创建新帖子的表单。

/users发送POST请求将是您在数据库级别实际创建新帖子的方式。

/users/:id发送PUT请求将是您如何更新给定帖子的属性,再次由唯一ID标识。

/users/:id发送删除请求将是您删除指定帖子的方式,再次由唯一ID标识。

据我了解,REST模式主要是由Ruby on Rails框架推广(适用于Web应用程序),后者非常重视RESTful路由。我可能错了。

我可能不是最有资格谈论它的,但这就是我学习它的方式(特别是对于Rails开发)。

当有人提到“REST api”时,通常他们的意思是使用RESTful网址检索数据的api。

答案 2 :(得分:35)

REST是基于网络的软件架构的架构风格设计

REST概念称为资源。资源的表示必须是无状态的。它通过某种媒体类型表示。媒体类型的一些示例包括XMLJSONRDF。资源由组件操纵。组件通过标准统一接口请求和操作资源。在HTTP的情况下,该接口由标准HTTP操作组成,例如GETPUTPOSTDELETE

REST通常用于HTTP,这主要是由于HTTP的简单性以及它与RESTful原则的非常自然的映射。然而,REST并不依赖于任何特定的协议。

基本REST原则

客户端 - 服务器通信

客户端 - 服务器架构具有非常明显的关注点分离。所有以RESTful风格构建的应用程序原则上也必须是客户端服务器。

<强>无国籍

每个客户端对服务器的请求都要求完全表示其状态。服务器必须能够完全理解客户端请求,而无需使用任何服务器上下文或服务器会话状态。因此,所有州必须保留在客户端上。我们稍后将更详细地讨论无状态表示。

<强>可缓存

可以使用缓存约束,从而使响应数据能够被标记为可缓存或不可缓存。标记为可缓存的任何数据都可以重用作对同一后续请求的响应。

统一界面

所有组件必须通过单一统一界面进行交互。由于所有组件交互都通过此接口进行,因此与不同服务的交互非常简单。界面是一样的!这也意味着可以单独进行实现更改。这种变化不会影响基本的组件交互,因为统一的接口总是不变的。一个缺点是您遇到了界面。如果可以通过更改界面为特定服务提供优化,那么由于REST禁止此操作,您将失去运气。然而,从好的方面来看,REST针对网络进行了优化,因此REST在HTTP上非常受欢迎!

上述概念代表了REST的定义特征,并将REST架构与其他架构(如Web服务)区分开来。值得注意的是,REST服务是一种Web服务,但Web服务不一定是REST服务。

post 上查看此博客REST Design Principals,详细了解 REST 以及上述原则。

答案 3 :(得分:14)

它代表Representational State Transfer,它可能意味着很多东西,但通常当你谈论API和应用程序时,你所说的REST是一种做Web服务或让程序通过Web进行交谈的方式。

REST基本上是一种在系统之间进行通信的方式,并且完成了SOAP RPC的大部分工作,但是SOAP通常会建立连接,进行身份验证,然后通过该连接执行操作,REST的工作原理与此类似。网络工作。您有一个URL,当您请求该URL时,您会得到一些回复。这是事情开始变得混乱的地方,因为人们将网络描述为最大的REST应用程序,虽然这在技术上是正确的,但它并没有真正帮助解释它是什么。

简而言之,REST允许您使用与Web浏览器使用的工具类似的工具,让两个应用程序通过Internet进行通信。这比SOAP简单得多,REST所做的很多事情都说,“嘿,事情不一定非常复杂。”

值得一读:

答案 4 :(得分:4)

http://en.wikipedia.org/wiki/Representational_State_Transfer

基本的想法是,不是持续连接到服务器,而是发出请求,获取一些数据,向用户显示,但可能不是全部,然后当用户执行需要执行的操作时更多数据,或者将一些数据传递到服务器,客户端会启动对新状态的更改。