2011-12-13 158 views
8

我试着去了解一下来自Wikipedia等的REST风格的web服务,但我必须承认我没有明白。有一部电影中Denzell Washington说“像我5岁那样向我解释”。有人能为我提供有关RESTful服务的信息吗?什么是REST风格的Web服务

如果您知道影片的名称,则可获得奖励积分。

+1

[我只是这个今天早些时候更新](http://stackoverflow.com/questions/4573305/rest-api-why-use-put -delete-后获得/ 4573426#4573426)。 – zzzzBov 2011-12-13 17:26:48

+1

另外,[费城](http://en.wikiquote.org/wiki/Philadelphia(电影)),但似乎你误引了。 – zzzzBov 2011-12-13 17:27:56

+0

那个帖子里没有太多的四岁。在本质上它是什么,它与SOAP有什么不同?一个简单的例子会很棒。 – 2011-12-13 17:32:23

回答

20

当我第一次使用REST时,尽管有所有文档,但我仍然无法获得“全貌”。无论如何,这里是我对REST的简要介绍:

  • REST是一种构建Web服务的架构风格。

  • REST构建于HTTP之上。您的Web服务以URI的形式公开资源。您的服务允许客户端使用标准的HTTP动词来执行服务(GET =读取资源,POST =创建资源,PUT =更新资源,DELETE =删除资源)。

  • REST在过去几年中取得了巨大的发展势头,主要原因在于:(a)其简单性优于SOAP等其他类型。 (b)HTTP的无处不在。由于HTTP是经过时间考验的标准,大多数语言都有内置或第三方HTTP支持。你不能说关于SOAP的同样的事情。

  • 由于REST是一种风格而不是严格的协议/规范,因此有很多解释空间。许多称自己为“REST”的公共服务并不遵循这封信的风格。

4

RESTful services是代理转移状态的服务,因此名为REpresentational State Transfer。这个实际上是意味着数据是以声明的方式传递的,也就是说,你得到你所要求的。

REST与SOAP的不同之处在于它不是协议,并且没有正式的规范。 SOAP是通过使用通用接口远程访问功能来简化应用程序之间的数据传输。不幸的是,一般来说,SOAP是相当复杂的,并且使SOAP请求不是非常直接的,需要XML解析和生成。

相反,REST依靠超文本传输​​协议(HTTP)来完成繁重工作。 Web服务器和服务器脚本已经围绕HTTP工作。使用REST发出请求与URL请求一样简单,例如访问网页。 RESTful服务的API可以重复使用HTTP's methodsstatus codes中的任意一个来指示任何错误。 RESTful服务不像访问存储在数据库中的数据,而是使用特殊的查询和特殊代码,这使得访问更加类似于标准文件系统。

REST风格服务的关键部分是声明性。对GET /widgets/109340的请求很可能会让您获得ID为109340的小部件的数据。我说“可能”,因为没有保证。这取决于实现者。关键是您可以浏览REST请求并知道您期望返回的内容。使用SOAP,很难判断你是否有语法错误。

如果/widgets/109340不存在,而不是回传一个消息正文,用一些特定的值来表明内容存在,那么服务器可以返回一个404 Not Found的代码,并且用户将知道该特定的ID没有存在。如果403返回,用户将知道该项目存在,但他们没有权限访问它。这些请求响应代码已被支持URL请求的程序支持,因为它们对所有服务器都是通用的。这使得REST请求更具弹性。

REST在输出格式上也很灵活,/widgets/109340可能会返回一个JSON对象,但没有理由不能返回二进制数据,HTML,XML,SVG,Video或任何其他数据格式。 A CDN可以使用REST API来提供版本化的内容,其可以或不可以存储在文件系统上:GET /jQuery/1.0.0,GET /jQuery/1.7.1GET /jQuery/latest都是RESTful请求。

我会假设你懂得Simple Object Access Protocol (SOAP)是什么