On 3 Jan 2009, at 13:12, Noah Slater wrote:
On Fri, Jan 02, 2009 at 04:52:29PM -0800, Chris Anderson wrote:
In the normal case you would POST a document to a collection when you
want the server to choose the final URL. However, intermediaries have
a habit of retrying POSTs randomly, so when you POST and id-less Couch document, occasionally duplicate documents are created. We work around
this by recommending PUT as the document creation method. Of course
clients can specify any document id they'd like to, but for
lightweight clients CouchDB provides the _uuids service.

The POST is pragmatic for cache-control reasons, but also RESTy,
because it exposes the service that CouchDB uses internally for
directing document POSTs to new ids. By using the _uuids service,
clients can become the part of CouchDB that would direct documents to
URLs in a collection.

I don't agree and I think it should change to GET.

* You hint that it is to mirror the process required for the creation of documents. This is not how we should be designing the interface. UUID
   creation is totally disjoint and should be considered separately.

 * You mention cache-control, but nothing about GET semantics implies
   cacheability so unless there is some major flaw with common UA
   implementations I don't see this as a valid argument.

After researching this in more depth it turns out I was indeed mistaken in thinking *any* responses to GET requests can potentially be cached. Quoting from RFC 2616 [1]:

"The response to a GET request is cacheable if and only if it meets the requirements for HTTP caching described in section 13."

And section 13 [2] goes on to say that operations are transparent by default, and transparency can be relaxed:

      - only by an explicit protocol-level request when relaxed by
        client or origin server

      - only with an explicit warning to the end user when relaxed by
        cache or client

So as you say, unless common implementations have flaws, I think GET responses would not be cached unless we explicitly say so, assuming we handle the HEAD + If-Modified-Since etc. requests correctly (which is what a conforming cache proxy should do).

[1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3
[2]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html

Jason
--
Jason Davies

www.jasondavies.com

Reply via email to