我假设REST是一个Web服务但似乎我认为这是错误的 - 所以,什么是REST?
我读过维基百科,但仍然无法完全理解它。为什么要做很多地方将API称为REST API?
答案 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
概念称为资源。资源的表示必须是无状态的。它通过某种媒体类型表示。媒体类型的一些示例包括XML
,JSON
和RDF
。资源由组件操纵。组件通过标准统一接口请求和操作资源。在HTTP的情况下,该接口由标准HTTP操作组成,例如GET
,PUT
,POST
,DELETE
。
REST
通常用于HTTP
,这主要是由于HTTP的简单性以及它与RESTful原则的非常自然的映射。然而,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
基本的想法是,不是持续连接到服务器,而是发出请求,获取一些数据,向用户显示,但可能不是全部,然后当用户执行需要执行的操作时更多数据,或者将一些数据传递到服务器,客户端会启动对新状态的更改。