我当时以为REST是Web服务,但是似乎我在思考这一点上是不正确的-REST是什么?
我已经阅读了Wikipedia,但仍然无法完全解决。为什么有很多地方将API称为REST API?
我当时以为REST是Web服务,但是似乎我在思考这一点上是不正确的-REST是什么?
我已经阅读了Wikipedia,但仍然无法完全解决。为什么有很多地方将API称为REST API?
Answers:
REST不是特定的Web服务,而是用于管理状态信息的设计概念(体系结构)。关于此的开创性论文是Roy Thomas Fielding的论文(2000),“建筑风格和基于网络的软件体系结构设计”(可从加利福尼亚大学欧文分校在线获得)。
首先阅读Ryan Tomayko的帖子我如何向妻子解释REST;这是一个很好的起点。然后阅读菲尔丁的实际论文。它不是那么先进,也不是很长(六章,共180页)!(我知道你在学校的孩子们喜欢它简短)。
编辑:我觉得尝试解释REST是没有意义的。它具有许多概念,例如可伸缩性,可见性(无状态)等,读者需要掌握,而理解这些概念的最佳来源就是实际的论文。它远远不止POST / GET等。
REST是通常用于Web应用程序的软件设计模式。用外行的话来说,这意味着它是许多不同项目中常用的想法。它代表代表状态转移。REST的基本思想是将服务器端的对象(如数据库表中的行中)视为可以创建或销毁的资源。
考虑REST的最基本方法是格式化Web应用程序URL的方法。例如,如果您的资源称为“帖子”,则:
/posts
用户将如何访问所有帖子以进行显示。
/posts/:id
用户将如何访问和查看基于其唯一ID检索的单个帖子。
/posts/new
您将以这种方式显示用于创建新帖子的表单。
发送POST请求到/users
您将实际创建的方式在数据库级别新帖子的方式。
将PUT请求发送到 /users/:id
将是您如何更新给定帖子的属性(再次由唯一ID标识)的方式。
发送一个DELETE请求到 /users/:id
将是您如何删除给定帖子的方法,同样由唯一ID标识。
据我了解,REST模式主要是由Ruby on Rails框架(针对Web应用程序)推广的,该框架非常重视RESTful路由。我对此可能是错的。
我可能不是最有资格谈论它的人,但这就是我学到的方法(特别是对于Rails开发)。
当有人提到“ REST api”时,通常指的是使用RESTful url检索数据的api。
REST
是一种基于网络的软件体系结构的体系结构样式和设计。
REST
概念称为资源。资源的表示形式必须是无状态的。它通过某种媒体类型表示。媒体类型的一些例子包括XML
,JSON
,和RDF
。资源由组件操纵。组件通过标准的统一接口请求和操纵资源。在HTTP的情况下,该接口由标准HTTP OPS例如GET
,PUT
,POST
,DELETE
。
REST
通常在上使用HTTP
,主要是因为HTTP的简单性及其对RESTful原理的非常自然的映射。REST然而不限于任何特定协议。
客户端-服务器通信
客户端-服务器体系结构的关注点非常不同。原则上,以RESTful样式构建的所有应用程序也必须是客户端服务器。
无状态
对服务器的每个客户端请求都要求其状态被完全表示。服务器必须能够完全理解客户端请求,而无需使用任何服务器上下文或服务器会话状态。因此,所有状态都必须保留在客户端上。稍后我们将更详细地讨论无状态表示。
可缓存的
可以使用缓存约束,从而使响应数据能够被标记为可缓存或不可缓存。任何标记为可缓存的数据都可以重用作为对同一后续请求的响应。
统一界面
所有组件都必须通过一个统一的界面进行交互。因为所有组件交互都是通过此接口发生的,所以与不同服务的交互非常简单。界面是一样的!这也意味着可以单独进行实现更改。这样的更改不会影响基本组件的交互,因为统一接口始终不变。一个缺点是您被接口卡住了。如果可以通过更改接口将优化提供给特定服务,那么您就不走运了,因为REST禁止这样做。从好的方面来说,REST是针对Web优化的,因此REST在HTTP上的普及程度令人难以置信!
以上概念代表了REST的定义特征,并将REST体系结构与其他体系结构(如Web服务)区分开来。值得注意的是,REST服务是Web服务,但是Web服务不一定是REST服务。
它代表代表性状态转移,它可能意味着很多事情,但是通常当您谈论API和应用程序时,您所谈论的是REST作为一种做Web服务或获取程序进行Web交谈的方式。
REST基本上是系统之间进行通信的一种方式,它完成了SOAP RPC的大部分工作,但是SOAP通常建立连接,进行身份验证,然后对该连接进行处理,而REST的工作方式与Web的工作方式几乎相同。 。您有一个URL,当您请求该URL时,您会得到一些回报。由于人们将Web描述为最大的REST应用程序,因此这开始变得令人困惑,尽管从技术上讲这是正确的,但它并不能真正帮助解释它是什么。
简而言之,REST允许您使用类似于Web浏览器使用的工具来使两个应用程序通过Internet进行通信。这比SOAP简单得多,REST所做的很多事情都说:“嘿,事情不必这么复杂。”
值得读:
http://en.wikipedia.org/wiki/Representational_State_Transfer
基本思想是,您无需发出持续的服务器连接,而是发出请求,获取一些数据,并显示给用户,但不一定全部显示给用户,然后当用户执行需要更多数据的操作时,或将一些数据传递给服务器,客户端将更改更改为新状态。