代码之家  ›  专栏  ›  技术社区  ›  mshafrir

如何在RESTful web应用程序中执行“不太流行”的HTTP操作?

  •  4
  • mshafrir  · 技术社区  · 16 年前

    我正在开发一个Python web应用程序作为学习练习,我正在考虑使我的应用程序具有RESTful风格。

    为此,我希望能够在适用的情况下处理各种类型的HTTP动作/动词。例如,如果id为12的小部件用URI表示 http://domain/widget/12 ,我想让最终用户能够删除这个小部件,他们应该能够对/widget/12发出HTTP delete请求。

    然而,据我所知,HTML表单只支持GET和POST,所以我该如何使用“不太流行”的HTTP操作(如DELETE)发出HTTP请求呢?

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

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

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

    3 回复  |  直到 16 年前
        1
  •  7
  •   Tracker1    16 年前

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

        2
  •  1
  •   Breton    16 年前

    您可以通过POST隧道传输命令,也可以使用Ajax,或者两者兼而有之(当找不到javascript支持时,后隧道充当后备)

        3
  •  1
  •   JMS    16 年前

    Stephen Walther今天就这个话题发表了一篇很棒的博客文章。

    http://stephenwalther.com/blog/archive/2009/01/21/asp.net-mvc-tip-46-ndash-donrsquot-use-delete-links-because.aspx

    根据您希望严格遵守“RESTful”概念的程度,使用POST执行删除对您没有吸引力。