Hi Mark,

On Apr 24, 2006, at 11:57 AM, Mark Nottingham wrote:
Let's not rush into things. Part of the value of PUT is that it has a particular meaning (as used in WebDAV and elsewhere).

Turn it around for a moment; what are the use cases where PUT is useful over POST for something where you can't GET back the representation you just sent? If you're using PUT to do something like update part of a representation, rather than the whole thing, will it really be idempotent? Why not surface the thing as a separate URI?

I think the key that convinced me is that the way Rails is using PUT:

a) The PUT has all the "extrinsic" information needed to create the resource

That is, even if there are some "synthetic" fields created internally, or after the fact, by the server, they are not user- visible. In other words, the request really _does_ contain all the user-visible attributes.

b) No caching mechanisms should be using PUT to implement a write- through cache.

That is, if I understand Dan's citation of the spec properly, there is NO guarantee that the PUT is syntactically identical to the GET of the same content-type of that resource. As such, we only care about semantic equivalent, not syntactic exactitude.

At least, that's the most my poor brain can deduce on a Monday morning. Hopefully some of the experts will weigh in.

And thanks for asking -- this is a gnarly topic, and greater clarity would be a very useful thing!

-- Ernie P.



Cheers,


On 2006/04/24, at 11:49 AM, Dr. Ernie Prabhakar wrote:

Dan & Charlie,

On Apr 22, 2006, at 10:43 PM, Dan Kubb wrote:
So this means that POST is a way of sending data to a resource
that handles the request directly and/or can delegate the handling
to something else at its discretion.  PUT is a way of changing
the state of a resource explicitly identified by its URI.

Ah, very interesting.  My understanding was closer to Mark's:

My rule of thumb for PUT is that afterwards, if I GET a representation from the same resource, it should give me back what I sent in the first place (unless it's been separately changed in the meantime). You also have to account for transcoding.

But, if I'm following your argument, that is actually a _mis_understanding on my part. Very interesting.

Okay, if so, that is a nice separation, and David's usage is correct, with POST-as-POST being reserved for RPC-style calls with side-effects. I'll update the wiki accordingly:

http://microformats.org/wiki/rest/rails#Simply_RESTful

The other issue with PUT vs. POST is that the error/return codes are different, no? Does either plug-in currently handle those correctly?

-- Ernie P.


_______________________________________________
microformats-rest mailing list
[email protected]
http://microformats.org/mailman/listinfo/microformats-rest



--
Mark Nottingham     http://www.mnot.net/

_______________________________________________
microformats-rest mailing list
[email protected]
http://microformats.org/mailman/listinfo/microformats-rest

_______________________________________________
microformats-rest mailing list
[email protected]
http://microformats.org/mailman/listinfo/microformats-rest

Reply via email to