RESTful编程到底是什么?


当前回答

交谈不仅仅是交换信息。协议实际上是这样设计的,因此不必进行对话。每一方都知道他们的具体工作是什么,因为它在协议中有所规定。协议允许纯粹的信息交换,而不需要对可能的操作进行任何更改。另一方面,谈话允许一方询问另一方可以采取什么进一步行动。他们甚至可以问同一个问题两次,并得到两个不同的答案,因为另一方的状态可能在这期间发生了变化。对话是RESTful架构。菲尔丁的论文规定了如果一个人想让机器彼此交谈而不是简单地通信,那么他必须遵循的体系结构。

其他回答

REST是一种分布式系统(如WWW)软件架构风格,您可以想象它是一个精心设计的Web应用程序规则:一组Internet网页(一个虚拟状态机),其中通过单击链接(状态转换)进行超链接,结果是下一个网页(这意味着应用程序的下一个状态)。

REST描述了网络系统由三部分组成:

数据元素(资源、资源标识符、表示)连接器(客户端、服务器、缓存、解析器、隧道)组件(源服务器、网关、代理、用户代理)

REST严格满足以下条件:

应用程序功能的状态被划分为资源用作超链接定位语法的每个资源(例如,在WWW URI中)所有资源在具有资源转换状态的客户端之间共享统一接口,包括:有限的一组定义良好的操作(如HTTPGET/POST/PUT/DELETE)一组有限的内容格式内容类型,可能包括可执行代码(例如,在WWW Javascript中)

我会说,RESTful编程是关于创建遵循REST体系结构风格的系统(API)。

我发现M.Elkstein博士的这篇关于REST的精彩、简短且易于理解的教程,并引用了最能回答您问题的重要部分:

学习REST:教程

REST是一种用于设计网络应用程序的架构风格。其思想是,使用RPC或SOAP连接机器,使用简单的HTTP机器之间的呼叫。在许多方面,基于HTTP的万维网本身可以被视为基于REST的架构。RESTful应用程序使用HTTP请求来发布数据(创建和/或更新)、读取数据(例如进行查询)和删除数据。因此,REST对所有四个CRUD(创建/读取/更新/删除)操作使用HTTP。

我认为你不应该因为没有听到堆栈溢出之外的REST而感到愚蠢。。。,我也会遇到同样的情况!;另一个SO问题“为什么REST现在变得越来越大”的答案可能会缓解一些情绪。

交谈不仅仅是交换信息。协议实际上是这样设计的,因此不必进行对话。每一方都知道他们的具体工作是什么,因为它在协议中有所规定。协议允许纯粹的信息交换,而不需要对可能的操作进行任何更改。另一方面,谈话允许一方询问另一方可以采取什么进一步行动。他们甚至可以问同一个问题两次,并得到两个不同的答案,因为另一方的状态可能在这期间发生了变化。对话是RESTful架构。菲尔丁的论文规定了如果一个人想让机器彼此交谈而不是简单地通信,那么他必须遵循的体系结构。

这是一个令人惊讶的漫长的“讨论”,但至少可以说相当令人困惑。

IMO:

1) 没有一个大的酒吧和大量的啤酒,就没有一个安静的程序:)

2) 代表性状态转移(REST)是罗伊·菲尔丁(Roy Fielding)论文中提出的一种体系结构风格。它有许多限制。如果您的服务/客户尊重这些,那么它就是RESTful。就这样。

您可以(显著地)总结以下约束:

无状态通信遵守HTTP规范(如果使用HTTP)清晰传达传输的内容格式使用超媒体作为应用程序状态引擎

还有一个很好的帖子很好地解释了事情。

许多答案复制/粘贴了有效的信息,混淆了这些信息,增加了一些混乱。人们在这里谈论级别、RESTFulURI(没有这样的东西!)、应用HTTP方法GET、POST、PUT。。。REST不是关于这个或者不仅仅是关于这个。

例如,链接-有一个漂亮的API是很好的,但最终客户端/服务器并不真正关心你获得/发送的链接,重要的是内容。

最终,只要内容格式已知,任何RESTful客户端都应该能够使用任何RESTful服务。

RESTAPI是一种遵循REST体系结构约束的API实现。它充当一个接口。客户端和服务器之间的通信通过HTTP进行。RESTAPI利用HTTP方法建立客户端和服务器之间的通信。REST还使服务器能够缓存响应,从而提高应用程序的性能。客户端和服务器之间的通信是一个无状态的过程。我的意思是,客户端和服务器之间的每一次通信都像一次新的通信。

没有从以前的通信中携带的信息或记忆。因此,每次客户端与后端交互时,它都必须向其发送身份验证信息。这使后端能够确定客户端是否有权访问数据。

通过REST API的实现,客户端可以获得要与之通信的后端端点。这完全分离了后端和客户端代码。