什么是REST? 有点困惑

我是在假设REST是一个Web服务,但似乎我不正确的想法 – 那么,什么是REST?

我已经读过维基百科,但仍然无法把我的头围绕它。 为什么要做很多地方把API称为REST API?

REST不是一个特定的Web服务,而是一个用于pipe理状态信息的devise概念(体系结构)。 关于此的开创性论文是Roy Thomas Fielding的论文(2000),“build筑风格和基于networking的软件架构的devise”( 可从加州大学欧文分校在线获得)。

首先读Ryan Tomayko的post我如何向我的妻子解释REST ; 这是一个很好的起点。 然后阅读菲尔丁的实际论文。 这不是先进的,也不是很长(六章,180页)! (我知道你在学校的孩子就像短了一样)。

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

REST是通常用于Web应用程序的软件devise模式。 从外行的angular度来说,这意味着这是一个常用于许多不同项目的理念。 它代表了重新表述国家转移 。 REST的基本思想是将服务器端的对象(如数据库表中的行)视为资源,而不是创build或销毁。

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

/posts将是一个用户将如何访问所有职位,用于显示。

/posts/:id将是一个用户将如何访问和查看单个post,基于他们的唯一ID检索。

/posts/new将是如何显示一个表单来创build一个新的职位。

发送一个POST请求给/users将是如何实际上在数据库级别创build一个新的职位。

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

发送一个DELETE请求到/users/:id将是你将如何删除一个给定的职位,再次由一个唯一的ID标识。

据我所知,REST模式主要是通过Ruby on Rails框架推广的(对于web应用程序),这个框架强调RESTful路线。 不过,我可能是错的。

我可能不是最有资格谈论它,但这是我学会了它(专门为Rails开发)。

当有人引用“REST api”时,通常他们的意思是使用RESTful URL来检索数据的api。

REST是基于networking的软件体系结构的体系结构风格devise

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

REST通常通过HTTP ,主要是由于HTTP的简单性以及对RESTful原则的非常自然的映射。 然而,REST不受限于任何特定的协议。

基本的REST原则

客户端 – 服务器通信

客户端 – 服务器体系结构具有非常明显的关注点。 所有以REST风格构build的应用程序原则上也必须是客户端服务器。

无状态

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

可caching

可以使用高速caching约束,从而使响应数据被标记为可高速caching或不可高速caching。 标记为可caching的任何数据可以被重新用作对相同的后续请求的响应。

统一的界面

所有组件必须通过一个统一的接口进行交互。 因为所有的组件交互都是通过这个接口进行的,所以与不同服务的交互非常简单 界面是一样的! 这也意味着实施的变化可以孤立地进行。 这种变化不会影响基本的组件交互,因为统一的接口总是不变的。 一个缺点是你被卡在界面上。 如果通过更改界面可以为特定服务提供优化,那么REST禁止这样做是不可能的。 然而,好的一面是,REST针对networking进行了优化,因此REST over HTTP的受欢迎程度令人难以置信!

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

有关REST和上述原则的更多详细信息,请参阅REST Design Principals上的此博客文章 。

它代表具有代表性的状态转移(Representational State Transfer),它可能意味着很多事情,但通常当您谈论API和应用程序时,您正在讨论REST作为执行Web服务或通过Web进行程序交谈的方式。

REST基本上是一种在系统之间进行通信的方式,它完成了许多SOAP RPC的devise工作,但是SOAP通常会build立连接,进行身份validation,然后通过该连接执行任务,REST的工作方式与Web的工作方式几乎相同。 你有一个URL,当你请求这个URL时,你会得到一些东西。 这是事情开始变得混乱的地方,因为人们将Web描述为最大的REST应用程序,虽然这在技术上是正确的,但它并不能真正帮助解释它是什么。

简而言之,REST允许您使用类似于Web浏览器使用的工具,通过互联网交谈两个应用程序。 这比SOAP简单得多,REST所做的很多事情是:“嘿,事情不必如此复杂”。

值得一读:

  • 我如何向我的妻子解释REST (现在可以在这里find)
  • build筑风格与基于networking的软件体系结构的devise

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

其基本思想是,不是与服务器build立连接,而是提出请求,获取一些数据,向用户显示,但可能不是全部,然后当用户做一些需要更多数据的事情时,或者将某些内容传递给服务器,客户端会启动对新状态的更改。