PUT和DELETE应该用在表格中吗?

Ear*_*rlz 70 html rest http cross-browser

假设我的Web应用程序在服务器端完全支持PUT和DELETE,我应该使用它们吗?

基本上我的问题是有多少浏览器支持这个:

<form method="PUT">
Run Code Online (Sandbox Code Playgroud)

要么

<form method="DELETE">
Run Code Online (Sandbox Code Playgroud)

除了兼容REST之外,使用这两种HTTP方法有什么好处吗?(假设替换这两种方法是常用的POST)

lee*_*ggs 77

您的问题涉及两个密切相关但又分开的标准,即HTTP和HTML.PUT和DELETE方法是HTTP的一部分.在HTTP中,它们在RESTful接口以及构建在HTTP上的其他服务(如Webdav)中有明显的用途.

最高版本4的HTML仅定义了表单的POST和GET的使用.此时HTML5看起来好像可能支持其他方法.[注意,当前w3草案中不包括支持]

任何当前的浏览器支持(我都没有直接意识到)将是非常有限的,并且只是作为最前沿的实验非常有用.

  • 当前的HTML5草案不会**在形式上支持`PUT`或`DELETE`.相关部分目前正处于"最后征求意见"的位置,所以它们是_possible_它们将被实施,但不幸的是它看起来并不像它.我认为它曾在那里,然后被删除. (14认同)
  • 我对删除这些方法感到非常失望,因为它们很有意义.有没有人知道这个决定背后的原因? (8认同)
  • @Triztian https://www.w3.org/Bugs/Public/show_bug.cgi?id=10671并查看全文:http://programmers.stackexchange.com/a/211790/26123 (2认同)

BMi*_*ner 27

GET,POST,PUT和DELETE(还有其他)是HTTP标准的一部分,但您目前仅限于HTML表单中的GET和POST.

正如Andrew所说,你可以在AJAX请求中使用PUT和DELETE; 但是,这仅适用于某些浏览器(请参阅http://api.jquery.com/jQuery.ajax/).


mod*_*odu 17

截至2024 年 1 月,最新的 HTML 规范和草案默认情况下仍然不支持 GET 和 POST 以外的方法。如果您不使用方法中间件,那么您将不得不使用这两个选项。(method 属性也可以将“dialog”作为值,但它是无关紧要的,因为它与 HTTP 方法不直接相关。)

https://html.spec.whatwg.org/multipage/form-control-infrastruct.html#attr-fs-method


And*_*all 14

不,只有GET&POSTmethod属性的有效值.有关更多信息,请参阅HTML5规范.

不过,我相信你可以在AJAX请求中使用它们.

  • @code_dredd,有人用 DELETE 而不是 GET 打开了它 (4认同)