RE: versioning

On 20 Sep 2014 at 01:31, László Lajos Jánszky wrote:
>> Can you think of an use case that can't be addressed by these mechanisms?
> 
> HTTP headers typically break if you want to describe an embedded
> resource with them. So for example if you represent an embedded
> resource along with a PUT or PATCH link, then the etag header is
> related to the original resource and not to the embedded resource. So

Correct. But you also don't know if the embedded representation is "complete" or not.


> you cannot extract the etag of the embedded resource from the headers,
> you have to send it in the message body. And since it is in the
> message body, it has to be annotated with metadata.
>
> Just a short example using a human readable format:
> 
> {
>     users: [
>         {
>             name: "John",
>             etag: "...",
>             links: [
>                 {
>                     href: "http://example.com/users/1",
>                     rel: "http://example.com/rels#update",
>                     method: "PATCH",
>                     fields: ["name", "etag"],
>                     title: "update single embedded resource"
>                 }
>             ]
>         }//,
>         //...
>     ],
>     links: [
>         {
>             href: "http://example.com/users",
>             rel: "http://example.com/rels#bulk-update",
>             method: "PATCH",
>             fields: {users: ["name", "etag"]},
>             title: "update multiple embedded resources"
>         }
>     ]
> }
> 
> Is it possible to send these etags in request and response headers.
> Afaik the server can send only a single etag header by each response,
> and the client can send only a single etag header by each request. But
> maybe I am wrong...

No, that's correct. I worked on a different project a couple of years ago that had support for "embedded ETags". It sounded nice in theory, but in practice it didn't make much difference. If a resource is critical enough to require conditional requests, it should be worth the extra request to get its authoritative representation.


--
Markus Lanthaler
@markuslanthaler

Received on Sunday, 21 September 2014 20:24:06 UTC