- From: Eric J. Bowman <eric@bisonsystems.net>
- Date: Mon, 27 Feb 2012 22:27:38 -0700
- To: Martin Thomson <martin.thomson@gmail.com>
- Cc: Julian Reschke <julian.reschke@gmx.de>, Mike Kelly <mikekelly321@gmail.com>, HTTP Working Group <ietf-http-wg@w3.org>
Martin Thomson wrote: > > I agree with Mike that PATCH (or a special POST) aren't visibly > idempotent, which is a crucial characteristic if this is going to > work. > If 99.9% of partial updates are non-idempotent, wouldn't the need for idempotent partial update be an edge case, as opposed to crucial? What we're trying to make visible on the wire is *sender intent* not idempotency. The sender doesn't intend to make idempotent vs. non- idempotent requests. Idempotency is a property of the request method, not a sender intent in and of itself. If the sender intent is partial update, the method is PATCH. If the sender intent is full update, the method is PUT -- that intent is what makes a request idempotent or not. It wouldn't make sense to determine idempotency at a glance, but then still need to reverse-engineer sender intent. Which is where we'd be if PUT was allowed to sometimes mean partial update -- we'd need to consider other factors to determine sender intent, instead of simply looking at the request method. How would that be more visible? If sender intent was based on idempotency, we'd have two methods -- IDEMP and NOTIDEMP -- and wouldn't care about distinguishing full update from partial update from retrieval. But, sender intent is about what action to take, not the properties of that action. That's what needs to be visible. -Eric
Received on Tuesday, 28 February 2012 05:28:36 UTC