- From: Roy T. Fielding <fielding@gbiv.com>
- Date: Thu, 14 Feb 2008 10:49:53 -0800
- To: Julian Reschke <julian.reschke@gmx.de>
- Cc: Mark Nottingham <mnot@mnot.net>, HTTP Working Group <ietf-http-wg@w3.org>
On Feb 14, 2008, at 5:25 AM, Julian Reschke wrote:
> Adrien de Croy wrote:
>> Quick question (hopefully) - what's the difference between
>> "representation" in this case and "entity"? I feel I'm missing
>> something.
>> ...
>
> OK, let's try.
>
> A representation:
>
> "An entity included with a response that is subject to content
> negotiation, as described in Section 12. There may exist multiple
> representations associated with a particular response status." --
> <http://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.1.3>
Yikes, no thanks.
> An entity:
>
> "The information transferred as the payload of a request or
> response. An entity consists of metainformation in the form of
> entity-header fields and content in the form of an entity-body, as
> described in Section 7."
That is a representation. I was hoping to replace entity at some
point for
that reason. The payload is always a representation of *some*
resource. The
status code tells us which resource it is, and Content-Location tells
us its
most specific URI.
Getting back to Mark's proposal regarding 'requested variant'... I think
that is headed in the right direction but will need some tweaks.
PROPOSAL: Remove 'requested variant' from terminology and define
'selected representation' as (roughly): "The representation that
would be
returned by the server if the request method were GET, taking into
consideration selecting headers, as specified by the Vary
header's payload."
I would say that it is: "The representation that would be returned by
the
origin server if the request method were GET and the response status
200."
Note that Vary is one of those fields that is overspecified in 2616.
Vary is supposed to be instructions to any downstream caches, not a
limitation on origin server implementation. A server is fully within
its
rights to vary its representations however it likes without telling
the downstream recipients -- it only needs to tell the client what it
requires of any downstream cache keys (i.e., the interface requirement).
PROPOSAL: Define the response to PUT, POST, DELETE, and OPTIONS
to carry
a "status message," not a representation, UNLESS a Content-
Location is
present OR (in the case of POST) there is explicit freshness
information.
As such, ETags, etc. do not apply to them.
(This is a straw-man that I expect this to be controversial; just
trying
to get things going...)
Er, I don't think so. It really isn't that hard to distinguish between
a representation of the requested resource and a representation included
as payload within a message, even when we take into consideration the
206 partial responses (a representation of a set of ranges of the
selected
representation). Note that "status messages" are also subject to
negotiation.
PROPOSAL:
A 201 response MAY contain an ETag response header field
indicating the
current value of the newly created resource's selected
representation ETag
(i.e., the ETag that would be returned if the same selecting
headers had
been sent in a GET request to it).
By "newly created resource" and "to it", I assume you mean the resource
identified by the Location header field for POST and by the requested
URI
for PUT. Better to just say that.
The other spots that requested variant is used are all within
sections that
need a general rewrite.
....Roy
Received on Thursday, 14 February 2008 18:50:09 UTC