Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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
Ruby on rails 什么是理解RESTful及其含义的简明方法?_Ruby On Rails_Rest - Fatal编程技术网

Ruby on rails 什么是理解RESTful及其含义的简明方法?

Ruby on rails 什么是理解RESTful及其含义的简明方法?,ruby-on-rails,rest,Ruby On Rails,Rest,**更新:霍瑞!因此,这是一个实践和理解的旅程现在我不再觉得自己那么笨了* 我读了很多关于REST的文章,编写了几个利用REST资源的rails应用程序。然而,我从来没有真正感觉到我完全理解它是什么,休息和不休息的区别是什么。我也很难向人们解释为什么/什么时候应该使用它 如果有人已经找到了一个非常清楚的关于休息的解释,以及关于何时/为什么/在哪里使用它(何时不使用)的情况,如果你能把它放上去,这将对世界有益,谢谢!=) 很好地分类了从WS-*到RESTian的几种http应用程序样式的差异。我喜

**更新:霍瑞!因此,这是一个实践和理解的旅程现在我不再觉得自己那么笨了*

我读了很多关于REST的文章,编写了几个利用REST资源的rails应用程序。然而,我从来没有真正感觉到我完全理解它是什么,休息和不休息的区别是什么。我也很难向人们解释为什么/什么时候应该使用它

如果有人已经找到了一个非常清楚的关于休息的解释,以及关于何时/为什么/在哪里使用它(何时不使用)的情况,如果你能把它放上去,这将对世界有益,谢谢!=)

很好地分类了从WS-*到RESTian的几种http应用程序样式的差异。我喜欢这篇文章的地方在于它提醒你,我们称之为REST的大部分内容实际上只是部分符合Roy Fielding最初的定义

InfoQ还有一个更多的“休息是什么”的角度


在REST与SOAP的对比中,似乎有很多好的回答,特别是选择的答案

休息通常是这样学习的:

  • 您听说REST使用HTTP的方式是,因此您避开了SOAP Web服务的信封,因为许多SOAP标准所需的大部分内容都是由HTTP以一种简单、毫无意义的方式处理的。您还可以很快了解到,您需要使用正确的方法进行正确的操作
  • 后来,也许几年后,你听说休息不仅仅是休息。REST实际上也是资源间链接的概念。这通常需要一段时间才能理解的全部含义,但当您了解到这一点时,您就开始在响应中引入超链接,以便客户端可以导航您的系统,而不必与服务器想要如何命名其资源(即URI)相耦合
  • 即使以后,你也会发现你还没有理解REST!这是因为您发现媒体类型非常重要。您开始创建名为
    application/vnd.example.foo+json
    的媒体类型,并在其中放置超链接,因为这已经是您对REST的理解
  • 几年过去了,你第无数次重读菲尔丁的论文,看看你是否遗漏了什么,然后你突然意识到HATEOAS约束的真正含义是:客户端不知道服务器的资源是如何构造的,但它在运行时发现了这些关系。这也意味着,用户面前的屏幕完全由通过线路传递的内容驱动,,因此,事实上,如果服务器传递图像/jpeg,那么这就是您应该向用户显示的内容,而不是说“AtomProcessor无法处理图像/jpeg”的错误消息

  • 我刚和4号达成协议,我希望梯子不会太长!这花了我七年的时间。

    我会想象YMMV,但在我意识到REST本质上是静态WWW概念在web应用程序设计领域的延续之后,我发现很容易开始理解REST的细节。我曾在同一篇文章中写过(相当长的一篇):可伸缩性是REST(无状态、缓存)的一个明显优点

    但同时——这可能是超文本的主要好处——REST非常适合于有大量客户为您服务的情况。遵循REST和超文本约束大大减少了所有这些客户端和服务器之间的耦合,这意味着随着时间的推移,您在发展/开发服务时有了更多的自由—您不会被破坏可能耦合的客户端的风险所束缚


    实际上,如果您使用的是rails,那么restfulie是在客户端和服务器上处理超文本的一个很好的小框架。服务器端是rails的扩展,客户端是处理状态更改的DSL。有趣的东西,在这里查看:-我强烈推荐vimeo上的教程/演示视频:)

    内容类型:text/x-flamebait

    我最近一直在问同样的问题,我的猜测是 解释为什么完全休息是件好事的一半问题在于 为机器消耗的数据定义一个接口是非常重要的 现在不是了。好吧,你需要一个很好的理由来忽略这个问题 常识位(URL定义资源,HTTP动词定义动作, 我决不是建议我们回到那个令人憎恶的地方 是肥皂。但是以一种既能被菲尔丁认可又能被菲尔丁认可的方式来做HATEOAS (无非标准媒体类型)和机器友好型似乎提供 收益递减:使用标准媒体类型来 描述有效的转换(如果存在这样的媒体类型),但在哪里 该应用程序非常复杂,您的消费者代理仍然存在 需要知道哪些是实现目标的正确过渡 期望的目标(购票,或其他什么),但它不能做到这一点 除非你的消费者(人类)告诉你。如果他被要求 在他的程序中加入path具有的带外知识 linkrels创建\订单=>添加\行=>添加\付款\信息=>确认是 正确的一个,并且重置顺序不是正确的路径,那么我不知道 要知道让他教XML是一种更为严重的罪恶 解析器如何处理应用程序/x-vnd.yourname.order

    我的意思是,显然是的,如果有一个合适的 标准格式,具有库和其他可重用的格式,但 没有的(可能更常见)情况是,你的选择 根据Fielding,REST是(a)创建一个标准,或(b)创建 通过下载代码来扩充客户端。如果你只是 希望完成任务而不改变世界,选项(c) “编造一些东西”可能看起来很诱人,但我个人不这么认为
    怪你把它拿走了。

    我希望这不会让我失望