Hallvord R M Steen wrote:

I've built two-three websites that use content/language negotiation
and I now consider it an architectural mistake to rely on negotiation
because the URLs no longer uniquely identify the variants I in many
scenarios need to identify. It's OK-ish to do it as a pure format
choice where the server and UA just agree on using the PNG or GIF
version for an <IMG> tag. For links *users* (and FWIW search engines,
validators and other agents) may interact with it's however a big
mistake to move away from one URL per variant of a resource. In light
of my content negotiation experiments and experience I'd say an Access
attribute in HTML would be harmful to the usability of URLs.

As a URL user (web browsing human, HTML author, linker, bookmarker,
E-mail-with-links author) I often want to be sure about what variant
of a resource I link to. To be explicit about this across scenarios
requires explicit URLs with language and type information.


Agreed. I think the assumptions underlying content negotation are flawed, and thus the mechanism itself is flawed and causes confusion and inconvenience when used in practice. The sentiment underlying this proposal seems to be that HTTP content negotation would work fine if only the pesky browsers would support it, but I think there are deeper-rooted problems than simply a lack of browser support.

I think a better solution is to publish the HTML version with attributed hyperlinks, like this:

<link rel="alternate" type="application/pdf" href="document.pdf">

or, if you prefer:

<a href="document.pdf" rel="alternate" type="application/pdf">
    PDF Version
</a>

This way clients can discover the alternative representations, but the alternative representations are all directly addressable so you can link to a specific representation. This approach is used in practice successfully today to make available Atom representations of HTML pages across the web. Atom feeds are arguably the best example of a successful completely-RESTful API that we have today, so this approach is proven to work.

In future, once IETF has finished specifying this, it may also be possible to do this in the HTTP response headers for non-HTML resources:

Link: <document.pdf>; rel="alternate", type="application/pdf"
(or something similar)

...and some other document formats such as Atom already provide equivalent linking constructs that you can use today.

Reply via email to