2009-01-21 56 views
4

我正在开发一个Python Web应用程序作为学习练习,并且正在研究让我的应用程序成为RESTful。如何在RESTful Web应用程序中执行“不太流行”的HTTP操作?

为此,我希望能够处理适用的各种HTTP动作/动词。例如,如果id为12的小部件用URI http://domain/widget/12表示,并且我想让最终用户能够删除此小部件,则他们应该能够针对/ widget/12发出HTTP DELETE请求。

但是,据我所知,HTML表单只支持GET和POST,那么我将如何使用“不太受欢迎的”HT​​TP操作(如DELETE)进行HTTP请求呢?

假设在小部件12的视图页面(由HTTP GET返回),我想包括一个只有一个提交按钮的表单来删除该小部件。例如:

<form action="/widget/12" method="DELETE"> 
<input type="submit" value="Delete Me!" /> 
</form> 

但是,已经确定HTML表单不支持方法属性的DELETE。那么在这种情况下,从客户端执行DELETE请求的RESTful方式是什么?

回答

7

从浏览器中,您需要为描述的场景使用XmlHttpRequest(Ajax)。如果您的客户端或服务器不支持其他方法,则使用自定义X-HTTP-Method-Override标头指定操作已变得很常见。

+0

rails有一个很好的方式,你使用POST,但包含一个_method参数,以便服务器知道你的意思。 – 2011-02-20 01:32:50

1

你要么隧道穿越POST命令,或使用Ajax,或磁盘后(后隧道充当回来时,JavaScript的支持没有发现跌倒)

相关问题