我试过阅读维基百科等的RESTful网络服务,但我必须承认我没有得到它。 Denzell Washington说有一部电影“向我解释,就像我是一个5岁的孩子”。关于RESTful服务,有人可以为我做这件事吗?
如果您知道电影的名称,可以获得积分。
答案 0 :(得分:22)
当我第一次使用REST时,尽管那里有所有文档,我也很难获得“全局”。无论如何,这是我对REST的简要介绍:
REST是一种用于构建Web服务的架构风格。
REST建立在HTTP之上。您的Web服务以URI的形式公开Resources。您的服务允许客户端使用标准HTTP谓词对您的服务进行操作(GET =读取资源,POST =创建资源,PUT =更新资源,DELETE =删除资源)。
REST在过去几年中获得了巨大的发展势头,这主要归功于(a)它比SOAP等其他风格简单。 (b)无处不在的HTTP。由于HTTP是经过时间考验的标准,因此大多数语言都具有内置或第三方HTTP支持。你不能对SOAP说同样的话。
因为REST是一种风格而不是严格的协议/规范,所以有很多解释空间。许多称自己为“REST”的公共服务并不遵循这种风格。
答案 1 :(得分:4)
RESTful services是重新转移国家的服务,因此称为REpresentational State Transfer。这个实际上意味着什么是数据以声明的方式传递,也就是说,你得到你所要求的。
REST与SOAP的不同之处在于它不是协议,并且没有正式的规范。创建SOAP是为了通过使用通用接口远程访问功能来简化应用程序之间的数据传输。不幸的是,为了通常工作,SOAP非常复杂,并且发出SOAP请求并不是非常简单,需要XML解析和生成。
相反,REST依赖于超文本传输协议(HTTP)来完成繁重的任务。 Web服务器和服务器脚本已经围绕在HTTP中工作而构建。使用REST发出请求就像URL请求一样简单,例如访问网页。 RESTful服务的API可以重用HTTP's methods和status codes中的任何一个来发出任何错误信号。 RESTful服务不是通过花哨的查询和特殊代码访问存储在数据库中的数据,而是允许访问更类似于标准文件系统。
RESTful服务的关键部分是声明性。对GET /widgets/109340
的请求可能会为您提供ID为109340
的小部件的数据。我说"可能"因为没有保证。它取决于实现者。关键是您可以浏览REST请求并知道您希望返回的内容。使用SOAP,很难判断是否存在语法错误。
如果/widgets/109340
不存在,那么服务器可以返回一个404 Not Found
代码和用户,而不是传回一个消息体,而是指定内容存在的某个特定值。我们知道特定的身份证不存在。如果返回403
,则用户将知道该项目存在,但他们无权访问该项目。这些请求响应代码已经由发出URL请求的程序支持,因为它们对所有服务器都是通用的。这使得REST请求更具弹性。
REST在输出格式上也很灵活,/widgets/109340
可以返回JSON对象,但是没有理由它不能返回二进制数据,HTML,XML,SVG,视频或任何其他数据格式。 CDN可以使用REST API来提供可能存储或不存储在文件系统上的版本化内容:GET /jQuery/1.0.0
,GET /jQuery/1.7.1
和GET /jQuery/latest
都是RESTful请求。
我假设你明白Simple Object Access Protocol (SOAP)是什么