Re: Idempotent partial updates

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