Replacing the nonsense of SOAP and XML-RPC with equally ridiculous pedantry about HTTP minutiae is not helping your cause nor your software.
edit: Well, ajross has a point. There are actually all of eight HTTP 1.1 methods, and PATCH is not one of them.
It is "easy" to blindly follow any rule. In most cases it is also wrong.
> It is "easy" to blindly follow any rule. In most cases it is also wrong.
Come on.
Feeling entitled to making firm pronouncements about "correct" behavior on subjects one is not an expert in (and let's be clear: no one is an expert on PATCH yet) is in some sense the very definition of "cargo cult mentality".
Edit: that's probably harsher than it's intended. My point isn't really about PATCH, which seems sane. It's about the pedantic mentality which is running rampant in the REST community (c.f. the "ARGH!" above), which in my mind is taking a good idea and polluting it with terrible nonsense in the pursuit of "purity". Think of what happened to Agile if you continue down this path.
Rack::MethodOverride does this for Rack-based apps by using the value of the _method parameter as the http verb.
Having said that, I like subresource URLs and using PUT to do partial updates like that.
1. 400 bad data - a failed request
2. Blank out / delete the values of all fields not specified
3. Perform a PATCH-style partial update
Which of these is the most useful / least surprising / closest to the spec?
Now read the spec: http://tools.ietf.org/html/rfc2616#section-9.6 PUT should store the request as the resource, it doesn't have to. Also note the complete absence of push from the precious specification! (I know patch is an amendment, my point us that the HTTP spec shouldn't be considered perfect)
If PUT falls back to PATCH, then there's no replace action, which might be useful.
It doesn't end up being a huge deal practically, because partial updates are probably more common than replaces, but that's my reasoning for it.