don't POST when you should DELETE
one of the big disappointments of how HTTP was implemented from the UA-side (User Agent in this case means common browsers) is that lack of support for PUT and DELETE. this was understandable in the late 1980s and even into the early 1990s. but by now, this has become an embarrassment. it's dead simple to implement PUT and DELETE on servers (ok, you actually need to know what you're doing, but all the plumbing is already there). it's not rocket science for browsers, either. adding
method="DELETE" to an HTML
FORM would not take much work. i don't understand why this has not been done.
luckily, there is - today - a simple solution for common browsers. it's the
XMLHttpRequest object - Ajax.
it's fairly simple to write a method that will scan the HTML
FORM object, collect up all the inputs and commit them to the target URL using a
PUT instead of a
POST. same for the
DELETE cases. a bare-bones sample would look like this:
<form action="/customers/cid-123" method="get" onsubmit="ajax.PutThisResource();return false;"> <!-- fields and submit button go here --> </form> <form action="/customers/cid-123/" method="get" onsubmit="ajax.DeleteThisResource();return false;"> <input type="submit" /> </form>
sure, there are a few details; scanning the form, making the Ajax call, handling the return. but that's small stuff. the big point is that using
DELETE are essential to a solid HTTP/REST implementation. and an even bigger point is that there is no excuse for failing to do it.