Today's browsers (or HTML < 5) only support HTTP GET and POST, but to communicate RESTful one need PUT and DELETE too. If the workaround should not be to use Ajax, something like a hidden form field is required to overwrite the actual HTTP method.
Rails uses the following trick:
<input name="_method" type="hidden" value="put" />
Is there a possibility to do something similar with JAX-RS?
Not strictly a JAX-RS solution but spring 3.0 comes with a HiddenHttpMethodFilter
that implements exactly the trick that rails does, defaults to the same _method
parameter.
Note that you don't need to be using all of spring to use this filter, you can just configure it in your web.xml
and ignore the rest of spring.
Jersey also has something similar, filtering a header field though. Documentation can be found here
To quote Roy Fielding:
In any case, there are plenty of
RESTful services that do nothing but
GET and POST. The key is how those
methods are used, not what methods are
used. To give a specific example, what
makes a wiki more or less RESTful is
almost always determined by how it
(ab)uses GET and sessions -- whether
it uses PUT or POST for editing pages
is sugar topping in comparison.
Emphasis is mine, taken from this post
http://tech.groups.yahoo.com/group/rest-discuss/message/10746