RESTful编程到底是什么?


当前回答

老问题,新的回答方式。关于这个概念有很多误解。我总是努力记住:

结构化URL和Http方法/动词不是restful编程。JSON不是restful编程RESTful编程不适用于API

我将restful编程定义为

如果应用程序以客户端理解的媒体类型提供资源(是数据+状态转换控件的组合),则该应用程序是静止的

要成为一个安静的程序员,您必须尝试构建允许参与者做事的应用程序。不仅仅是公开数据库。

只有当客户端和服务器同意资源的媒体类型表示时,状态转换控制才有意义。否则,无法知道什么是控件,什么不是控件,以及如何执行控件。IE如果浏览器不知道html中的<form>标签,那么在浏览器中就没有什么可以提交到过渡状态。

我不想自我推销,但我在演讲中深入阐述了这些想法http://techblog.bodybuilding.com/2016/01/video-what-is-restful-200.html .

我演讲中的一段摘录是关于经常提到的richardson成熟度模型,我不相信这些级别,你要么是RESTful(级别3),要么不是,但我想指出的是,在你走向RESTful的过程中,每个级别都为你做了什么

其他回答

我认为restful的要点是将状态分离到更高的层,同时将互联网(协议)用作无状态传输层。大多数其他方法都会混淆。

这是处理互联网时代编程的根本变化的最佳实用方法。关于根本性的变化,Erik Meijer在这里就表演进行了讨论:http://www.infoq.com/interviews/erik-meijer-programming-language-design-effects-purity#view_93197 . 他将其概括为五种效果,并通过将解决方案设计成编程语言来提出解决方案。该解决方案也可以在平台或系统级别实现,无论使用何种语言。restful可以被视为在当前实践中非常成功的解决方案之一。

使用restful风格,您可以在不可靠的互联网上获取和操纵应用程序的状态。如果当前操作无法获得正确的当前状态,则需要零验证原则来帮助应用程序继续。如果它无法操纵状态,它通常使用多个确认阶段来保持正确。从这个意义上讲,rest本身并不是一个完整的解决方案,它需要web应用程序堆栈的其他部分中的功能来支持其工作。

鉴于这个观点,rest风格并没有真正与互联网或web应用程序绑定。这是许多编程情况的基本解决方案。它也不简单,它只是让界面变得非常简单,并且可以很好地处理其他技术。

只有我的2厘米。

编辑:两个更重要的方面:

无国籍是一种误导。它与restful API有关,而不是应用程序或系统。系统需要有状态。Restful设计是基于无状态API设计有状态系统。另一位QA的一些引用:REST对资源表示进行操作,每个资源表示由URL标识。这些通常不是数据对象,而是复杂的对象抽象。REST代表“代表性状态转移”,这意味着它是关于通信和修改系统中某些资源的状态的。幂等性:REST中一个经常被忽视的部分是大多数动词的幂等性。这导致了健壮的系统和语义精确解释之间的相互依赖性降低。

这是一种编程,您的系统架构符合Roy Fielding在论文中提出的REST风格。由于这是描述网络的架构风格(或多或少),所以很多人都对它感兴趣。

另外一个答案是:没有。除非你是作为学术研究软件架构或设计web服务,否则真的没有理由听过这个词。

剩下的一点是,如果我们同意对基本操作使用通用语言(http动词),那么可以配置基础结构来理解它们并适当地优化它们,例如,通过使用缓存头在所有级别实现缓存。

通过正确实现的restful GET操作,信息来自服务器的DB、服务器的memcache、CDN、代理的缓存、浏览器的缓存或浏览器的本地存储都无关紧要。可以使用最快、最容易获得的最新来源。

说Rest只是语法上的改变,从使用带有动作参数的GET请求到使用可用的http动词,这看起来没有任何好处,而且纯粹是修饰。重点是使用一种可以被链的每个部分理解和优化的语言。如果GET操作有副作用,则必须跳过所有HTTP缓存,否则结果将不一致。

REST代表代表性状态转移。

它依赖于一个无状态的、客户端-服务器的、可缓存的通信协议——实际上在所有情况下都使用HTTP协议。

REST通常用于移动应用程序、社交网络网站、mashup工具和自动化业务流程。REST风格强调通过有限数量的操作(动词)来增强客户端和服务之间的交互。通过将资源(名词)分配给它们自己独特的通用资源指示符(URI)来提供灵活性。

休息介绍

老问题,新的回答方式。关于这个概念有很多误解。我总是努力记住:

结构化URL和Http方法/动词不是restful编程。JSON不是restful编程RESTful编程不适用于API

我将restful编程定义为

如果应用程序以客户端理解的媒体类型提供资源(是数据+状态转换控件的组合),则该应用程序是静止的

要成为一个安静的程序员,您必须尝试构建允许参与者做事的应用程序。不仅仅是公开数据库。

只有当客户端和服务器同意资源的媒体类型表示时,状态转换控制才有意义。否则,无法知道什么是控件,什么不是控件,以及如何执行控件。IE如果浏览器不知道html中的<form>标签,那么在浏览器中就没有什么可以提交到过渡状态。

我不想自我推销,但我在演讲中深入阐述了这些想法http://techblog.bodybuilding.com/2016/01/video-what-is-restful-200.html .

我演讲中的一段摘录是关于经常提到的richardson成熟度模型,我不相信这些级别,你要么是RESTful(级别3),要么不是,但我想指出的是,在你走向RESTful的过程中,每个级别都为你做了什么