4 Answers
4

The ideal way of doing this is to change a part (sub resource) of the resource and have the server return a 303 See Other with Location header to point to the altered resource. The 303 See Other tells the client that as the result of the request some other resource has changed and that the client should update the representation it holds.

What's wrong with PATCH?
The "partial modification" issue seems to call for it, especially considering that sometimes you haven't got all the data needed to "replace it"...
But honestly, I see no point in following the "POST = create, PUT = replace, PATCH = update" philosophy religiously, and I see nothing wrong in using only POST.

PUT and POST mean exactly what is written in the HTTP spec. No more, no less. PUT means update in the sense of 'replace current state of resource with this state' and POST just means 'process this (according to your nature)'. You can do partial updates with POST on a sub-resource (e.g. POST /payments/2/post-here) but you need to define all the payload types. The PUT with 303 approach is simpler.
–
Jan AlgermissenFeb 22 '10 at 10:18

1

Twitter's API is not RESTful because it does not make use of media type semantics but provides a static description of the available resources and operations. That is not REST (which does not mean that it is not useful). The update seems to require a POST, so at least I do not see twitter using a side effect free method (GET) for change operations.
–
Jan AlgermissenFeb 22 '10 at 10:20