There seems to be a common thread with most posts here. People
have been busy modeling everything as a resource and now they
want to know how to do everything in a PUT or DELETE instead of
any of the other HTTP methods. That is wrong. That is thinking
HTTP is just a "Save as..." dialog.
REST is not limited to GET, PUT, and DELETE. Anyone who says so
is just making things up as they go along. REST is limited to the
client being told what to do next by the current state of where
they are now, aside from the entry point(s) we call a bookmark.
That is feasible because the set of methods is uniform, not because
it is limited to CRUD. POST is an equal party in the REST interface,
particularly when actions are being applied to the resources that
are a composite of multiple source resources. So is PATCH.
Doing RESTful actions on multiple resources is no different from
selecting multiple tunes in iTunes and using the info dialog
to set certain properties across all selected tunes. It is a UI issue.
The UI builds a set of actions to perform and then performs them
in whatever way is most efficiently provided by the set of resources
being operated upon. If those resources (or, rather, the index to
those resources) say they can be operated upon as a group by POST
of a selection form, then so be it -- that is perfectly RESTful
even without the benefit of per-resource cache invalidation.
Likewise for PATCH or PUT to a meta-resource, or PROPPATCH to a
WebDAV resource, it is RESTful if there is some engine described
by a representation provided by the origin server that instructs
the client on what to do next.
The goals are to remove coupling and maximize the number of
reusable resources.
....Roy