Sollten PUT und DELETE in Formularen verwendet werden?

76

Angenommen, meine Webanwendung unterstützt PUT und DELETE auf der Serverseite vollständig, sollte ich sie verwenden?

Grundsätzlich ist meine Frage, wie viele Browser dies unterstützen:

<form method="PUT">

oder

<form method="DELETE">

Gibt es andere Vorteile bei der Verwendung dieser beiden HTTP-Methoden als die REST-Konformität? (Unter der Annahme, dass der Ersatz für diese beiden Methoden der häufig verwendete POST ist)

Earlz
quelle

Antworten:

82

Ihre Frage betrifft zwei eng verwandte, aber getrennte Standards, HTTP und HTML. Die Methoden PUT und DELETE sind Teil von HTTP. In HTTP werden sie offensichtlich in RESTful-Schnittstellen und anderen auf HTTP aufbauenden Diensten wie Webdav verwendet.

HTML bis Version 4 definiert nur die Verwendung von POST und GET für Formulare. HTML5 scheint zu diesem Zeitpunkt so zu sein, als ob es die weiteren Methoden unterstützen könnte. [Hinweis: Der aktuelle W3-Entwurf enthält keine Unterstützung.]

Jegliche aktuelle Browserunterstützung (mir ist keine direkt bekannt) ist sehr begrenzt und nur als Experiment an der Spitze wirklich nützlich.

Leebriggs
quelle
17
Der aktuelle HTML5 Entwurf wird nicht unterstützt PUToder DELETEin Formen. Der entsprechende Abschnitt befindet sich derzeit unter "Letzter Aufruf zur Kommentierung", daher ist es möglich, dass sie implementiert werden, aber leider sieht es nicht so aus. Ich denke, es war dort irgendwann und wurde dann entfernt.
Andrew Marshall
1
In Bezug auf die Browserunterstützung hat Mozilla dieses Ticket von Interesse für FF4, was darauf hinweist, dass sie es unterstützt haben, es aber jetzt entfernt haben - bugzilla.mozilla.org/show_bug.cgi?id=600813 .
Leebriggs
@andrew In der Tat war es mehrere Jahre lang Teil des Entwurfs, wurde aber Ende letzten Jahres entfernt. Ich wollte nicht vorschlagen, dass es Teil des Standards sein wird, nur dass es sein könnte .
Leebriggs
8
Ich bin ziemlich enttäuscht über die Entfernung dieser Methoden, da sie sehr sinnvoll sind. Hat jemand einen Link für den Grund dieser Entscheidung?
Tristian
27

GET, POST, PUT und DELETE (es gibt andere) sind Teil des HTTP-Standards, aber Sie sind derzeit in HTML-Formularen auf GET und POST beschränkt.

Wie Andrew erwähnt hat, können Sie PUT und DELETE in AJAX-Anforderungen verwenden. Dies funktioniert jedoch nur in einigen Browsern (siehe http://api.jquery.com/jQuery.ajax/ ).

BMiner
quelle
14

Nein, GET& POSTsind die einzigen gültigen HTTP-Methodenwerte für das methodAttribut. Weitere Informationen finden Sie in der HTML-Spezifikation .

Ich glaube, Sie können sie jedoch in AJAX-Anfragen verwenden.

Andrew Marshall
quelle
Link ist unterbrochen.
code_dredd