如何在RESTful Web应用程序中执行"不太流行"的HTTP操作?

msh*_*rir 4 rest http

我正在开发一个Python Web应用程序作为学习练习,我正在研究使我的应用程序RESTful.

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

但是,就我所知,HTML表单仅支持GET和POST,那么我将如何使用"不太流行"的HTTP操作(例如DELETE)发出HTTP请求?

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

<form action="/widget/12" method="DELETE">
<input type="submit" value="Delete Me!" />
</form>
Run Code Online (Sandbox Code Playgroud)

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

Tra*_*er1 7

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