discovering "alternate" representations?

Kristian Rink <[email protected]>
Newsgroups gmane.comp.web.services.rest
Message-ID <[email protected]>
Folks;

trying to build REST resources that make heavy use of delivering 
different representations of binary files, I ended up looking for 
thoughts on how to deal with alternate representations of a resource in 
different media types.

To outline the issue in a simple example: Imagine instructions on how to 
assemble a piece of furniture bought in some large store. These 
instructions are made available, say, as "text/html" (written 
description of what to do), "application/pdf" (step-by-step instructions 
in illustrations) and "application/mp4" (video showing what needs to be 
done).

All the things basically represent the same resource, the same content, 
in just different representations. There's two things that make me think:

- As far as I understood content negotiation by now, this is sort of a 
client-driven procedure: Client provides a more or less lengthy weighted 
Accept: header, server delivers the kind of representation content type 
that seems to suit the client best, based upon Accept:, language, and of 
course the kind of stuff the server is capable of providing, after all. 
While this is neat when making client and server quietly make up whether 
to transfer and render image/gif or image/png, it seems to fall short in 
a case as the one outlined before. Here, I would kind of expect a 
standards based approach allowing for the client to determine which kind 
of representations a server is capable to provide, to by then know 
"there's text, there's a pdf, and there's a video clip of the same 
content, too". What is the best way of dealing with such a requirement, 
both in terms of interoperability and in terms of "clean-ness of design"?

- Right now, I make use of Atom <entry>'s and rel="alternate" links to 
keep such things together. Apart from at least _feeling_ a bit strange 
(now the different "representations" of the same thing are linked as 
"alternate" from an Atom <entry> which does not represent but just 
describe that actual resource) I am left with another question: Right 
now, with this approach, I easily can provide a client system with the 
information which media type representations are available for that very 
resource. However this just (obviously) works whenever accessing the 
<entry> resource first, to by then see a structure like

http://.../documentation/how-to-build-that-table

having link rel="alternate" to

http://.../documentation/how-to-build-that-table/file.mp4
http://.../documentation/how-to-build-that-table/file.pdf
http://.../documentation/how-to-build-that-table/file.txt

which works. However, in such a situation, to tell which alternate 
representations are there, I always will have to access the

http://.../documentation/how-to-build-that-table

resource first, which means that I have to know this one. I so far 
haven't figured out an obvious, portable way how to, in example starting 
out with the "application/pdf" representation, tell that there are 
alternative media type representations available, as well.

Hmm. Maybe I am missing something essential / fundamental / trivial 
about that, or I made a fundamental mistake in thinking about my 
resource design. Inspirations / thoughts, anyone?

TIA and all the best,
Kristian


------------------------------------

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/rest-discuss/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/rest-discuss/join
    (Yahoo! ID required)

<*> To change settings via email:
    [email protected] 
    [email protected]

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.