Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是RESTful Web服务_Rest - Fatal编程技术网

什么是RESTful Web服务

什么是RESTful Web服务,rest,Rest,我试着从维基百科等网站上读到什么RESTful Web服务,但我必须承认我不明白。有一部电影中,丹泽尔·华盛顿说“像我5岁一样向我解释”。关于RESTful服务,有人能帮我做到吗 如果你知道这部电影的名字,你会得到额外的积分。当我第一次开始学习REST时,我也很难理解“大局”,尽管有所有的文档。无论如何,以下是我对休息的简短看法: REST是用于构建web服务的体系结构样式 REST构建在HTTP之上。您的web服务以URI的形式公开资源。您的服务允许客户端使用标准HTTP谓词(GET=读取资

我试着从维基百科等网站上读到什么RESTful Web服务,但我必须承认我不明白。有一部电影中,丹泽尔·华盛顿说“像我5岁一样向我解释”。关于RESTful服务,有人能帮我做到吗


如果你知道这部电影的名字,你会得到额外的积分。

当我第一次开始学习REST时,我也很难理解“大局”,尽管有所有的文档。无论如何,以下是我对休息的简短看法:

  • REST是用于构建web服务的体系结构样式

  • REST构建在HTTP之上。您的web服务以URI的形式公开资源。您的服务允许客户端使用标准HTTP谓词(GET=读取资源,POST=创建资源,PUT=更新资源,DELETE=删除资源)对您的服务进行操作

  • REST在过去几年中获得了巨大的发展势头,这主要是因为(a)它比SOAP等其他样式更简单。(b) HTTP的无处不在。由于HTTP是经过时间测试的标准,大多数语言都有内置或第三方HTTP支持。你不能对肥皂说同样的话

  • 因为REST是一种风格,而不是一种严格的协议/规范,所以有很大的解释空间。许多自称“休息”的公共服务机构并没有不折不扣地遵循这种风格

是代表性地传输状态的服务,因此命名为代表性状态传输。这实际上意味着数据是以声明的方式传递的,也就是说,你得到了你想要的

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

相反,REST依靠超文本传输协议(HTTP)来完成繁重的工作。Web服务器和服务器脚本已经围绕在HTTP中工作而构建。使用REST发出请求就像URL请求一样简单,例如访问网页。RESTful服务的API可以重用其中任何一个并发出任何错误信号。RESTful服务不需要通过奇特的查询和特殊的代码访问存储在数据库中的数据,而是允许更类似于标准文件系统的访问

RESTful服务的关键部分是声明性。请求
GET/widgets/109340
很可能会获取id为
109340
的小部件的数据。我说“可能”是因为没有保证。这取决于实现者。关键是,您可以浏览一下REST请求,知道您希望返回什么。使用SOAP,很难判断是否存在语法错误

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

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


我想你也明白什么是

。但你似乎引用错了。那篇文章没有多少四岁的内容。本质上,它是什么?它与SOAP有什么区别?举个简单的例子就好了。我发布它是因为它是相关的,而不是因为它是一个答案。“什么是REST?”对于这个网站来说是一个非常糟糕的问题。谷歌是一个更好的去处,可以为这样广泛的问题找到答案。这个答案忽略了REST架构中一个非常重要的部分,叫做。这提供并允许服务器独立于客户机进行更改/发展。这是一种方式,比你能说的更多关于SOAP服务的方式,也是web本身成功的部分原因。事实上,REST是对我们已经使用过的web的通用架构进行形式化的一种尝试,超文本/超链接可以说是web最重要的部分,因此REST也是如此。状态转移和声明性接口根本不是一回事。状态传输是返回给客户端的资源表示中的超链接,调用之间不存储服务器端应用程序状态。这允许在服务器、客户机和应用程序之间进行多层次的解耦,从而打开了一个可伸缩性的世界。声明性接口可能是启用状态转移的先决条件,但这并不意味着它们是同一件事。@MerlynMorgan Graham,如果你有更好的答案,一定要回答这个问题。只是想帮忙。我本不想冒犯你,所以如果我冒犯了你,我向你道歉:)我会接受你的建议的@梅林·摩根·格雷厄姆,我一点也不生气,只是你似乎有更多我不知道的信息,你可以用你已经发布的内容写出一个好的答案。