当前位置:  开发笔记 > 编程语言 > 正文

RESTful流程?

如何解决《RESTful流程?》经验,为你挑选了1个好方法。

所以...

我一直在阅读有关REST的内容,其背后的想法听起来不错,但问题是,它是否可以轻松集成到网页的标准流程中?

例如,用户创建某种项目,博客文章或您拥有的内容,现在他想删除它,因此他点击页面上的"删除"链接.怎么办?比方说,我们如何发出DELETE请求http://mysite.com/posts/5?我们如何处理这个请求?我没有使用cURL或任何东西的经验,但从它的外观来看,我将不得不curl_init('http://mysite.com/posts/5')工作一些魔法.但是我甚至会把那个剧本放在哪里?那必须在另一个页面上,这将打破REST的整个想法.那我就是GET另一个页面,这又DELETE是我原本想要的页面?

这就是为什么人们很少使用REST或实际上有一个很好的方法来做到这一点?


看起来我需要澄清一下.人们建议我在URL中加入"DELETE"和"POST"等字样.我相信REST规定我们为每个资源都有一个唯一的URL,但对于该资源上的每个操作都没有.我认为这也意味着我们每个资源只有一个且只有一个 URL.即我希望能够从一个 URL 删除或查看特定帖子的内容(通过发送DELETE,PUT,POST或GET),而不是具有其他参数的不同URL



1> Andres Jaan ..:

使用一个安静的服务器,相同的url(比如/ books/1)可以响应许多不同的动词.这些动词,GET,POST,PUT和DELETE以及路径指示您要对服务器上的数据执行的操作.响应会告诉您请求的答案.

REST是以可预测和合理的方式访问数据.

如果你来自一个强大的PHP背景,每个网址必须映射到一个特定的文件,你是对的,它没有多大意义.两个最明显的RESTful开发环境,ASP.NET MVC和Rails,每个都有特殊的服务器(或服务器逻辑),它们可以读取动词并为您执行特殊的路由.这就是让应用程序的"正常流程"按照您的预期通过的原因.对于PHP,有一些框架可以帮助解决这个问题,例如WSO2的WSF.

REST如何与Web浏览器一起使用

举个例子,举个例子.我们有帖子,我们想删除一个.

    我们首先访问/ posts/4之类的网址.正如我们所期望的那样,这显示了帖子4,它的属性以及你可以采取的一些行动.呈现此网址的请求看起来像GET /posts/4.响应包含描述项目的HTML.

    用户单击"删除项目4"链接,该链接是HTML的一部分.这会向DELETE /posts/4服务器发送一个请求.请注意,这已经重新使用了/posts/4url,但逻辑必须不同.

    在HTML表单和Web浏览器中,默认情况下,其中许多将使用method ="delete"将链接更改为method ="post"链接.您需要使用Javascript(类似这样的)来更改动词.Ruby on Rails使用隐藏的输入字段(_method)来指示在表单上使用哪种方法,作为替代方法.

    在服务器端,执行"删除项目"逻辑.它知道执行此操作是因为request(DELETE)中的动词与正在执行的动作相匹配.这是REST的关键点,HTTP动词变得有意义.

    删除该项目后,您可以回复"是,完成"或"不,抱歉,您不能这样做"这样的页面,但对于浏览器来说,将其放在其他地方更有意义.正在删除的项目,使用重定向进行响应是GET /posts很有意义的.

如果你看一下服务器日志,很清楚每个人对服务器做了什么,但这并不像...那么重要.

REST如何与任意数据一起使用

REST的另一个关键点是它适用于多种数据格式.假设您正在编写一个程序,希望以编程方式阅读和与博客交互.您可能希望以XML格式提供所有帖子,而不是必须抓取HTML以获取信息.

GET /posts/4.xml很直观:"服务器,请给我xml描述帖子#4." 响应将是xml.RESTful服务器使得如何获取所需信息显而易见.

当您提出DELETE /posts/4.xml请求时,您会问:"服务器,请删除第4项." 像"好的,确定"这样的回答通常足以表达发生的事情.然后程序可以决定它想要什么,并提出另一个请求.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有