<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: Do we need complex restful content negotiation?</title>
	<atom:link href="http://bill.burkecentral.com/2007/11/30/do-we-need-complex-restful-content-negotiation/feed/" rel="self" type="application/rss+xml" />
	<link>http://bill.burkecentral.com/2007/11/30/do-we-need-complex-restful-content-negotiation/</link>
	<description>Middleware tech talk</description>
	<pubDate>Fri, 21 Nov 2008 22:24:39 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Subbu Allamaraju</title>
		<link>http://bill.burkecentral.com/2007/11/30/do-we-need-complex-restful-content-negotiation/#comment-1884</link>
		<dc:creator>Subbu Allamaraju</dc:creator>
		<pubDate>Fri, 25 Apr 2008 16:50:30 +0000</pubDate>
		<guid isPermaLink="false">http://bill.burkecentral.com/2007/11/30/do-we-need-complex-restful-content-negotiation/#comment-1884</guid>
		<description>"Why would a client ever send more than one Accept header?"

Special purpose clients are not likely to send more than one.

"Why would a client or server ever produce or consume wildcard content types?  i.e. “text/*” or even “*/*”?"

IMO, wild card types apply to general purpose clients like browsers.</description>
		<content:encoded><![CDATA[<p>&#8220;Why would a client ever send more than one Accept header?&#8221;</p>
<p>Special purpose clients are not likely to send more than one.</p>
<p>&#8220;Why would a client or server ever produce or consume wildcard content types?  i.e. “text/*” or even “*/*”?&#8221;</p>
<p>IMO, wild card types apply to general purpose clients like browsers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: billburke</title>
		<link>http://bill.burkecentral.com/2007/11/30/do-we-need-complex-restful-content-negotiation/#comment-956</link>
		<dc:creator>billburke</dc:creator>
		<pubDate>Fri, 30 Nov 2007 22:57:58 +0000</pubDate>
		<guid isPermaLink="false">http://bill.burkecentral.com/2007/11/30/do-we-need-complex-restful-content-negotiation/#comment-956</guid>
		<description>Thanks Mark for providing your insight to a REST noob...

Aren't the examples you gave (Googlebot, browsers) really special cases in that they are really just only reading content and not really interacting with the resource.  In the browser's case, its really just acting a dispatcher to a specific renderer plugin.  I'm thinking more of the programmtic web, web applications (specifically &lt;a href="http://www.ibm.com/developerworks/xml/library/wa-ajaxarch/" rel="nofollow"&gt;Ajax + REST&lt;/a&gt;), or even &lt;a href="http://bill.burkecentral.com/2007/09/18/distributed-compensation-with-rest-and-jbpm/" rel="nofollow"&gt;BPM orchestrating a set of distributed services.&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>Thanks Mark for providing your insight to a REST noob&#8230;</p>
<p>Aren&#8217;t the examples you gave (Googlebot, browsers) really special cases in that they are really just only reading content and not really interacting with the resource.  In the browser&#8217;s case, its really just acting a dispatcher to a specific renderer plugin.  I&#8217;m thinking more of the programmtic web, web applications (specifically <a href="http://www.ibm.com/developerworks/xml/library/wa-ajaxarch/" rel="nofollow">Ajax + REST</a>), or even <a href="http://bill.burkecentral.com/2007/09/18/distributed-compensation-with-rest-and-jbpm/" rel="nofollow">BPM orchestrating a set of distributed services.</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Baker</title>
		<link>http://bill.burkecentral.com/2007/11/30/do-we-need-complex-restful-content-negotiation/#comment-955</link>
		<dc:creator>Mark Baker</dc:creator>
		<pubDate>Fri, 30 Nov 2007 22:36:54 +0000</pubDate>
		<guid isPermaLink="false">http://bill.burkecentral.com/2007/11/30/do-we-need-complex-restful-content-negotiation/#comment-955</guid>
		<description>"When you’re writing a distributed application, you research the services you are going to interact with"

You think Googlebot was written that way?  Or curl?  Or browsers?  No, they just support HTTP plus whatever data formats they need to get their job done.  But they have no idea which resources will or won't emit or consume this data at design time: it's all discovered at runtime (save for the initial URI which is provided at configuration time).

I deployed a system a few years ago that exposed streaming data feeds with their own URIs, but the feeds could be expressed in two ways; HTML, for when somebody typed that URI into a browser, and a proprietary compressed binary format for automata interested in consuming that data.  There's no magic to it.  That said, it's long been recognized that the Accept header is a broken way to do negotiation, and that something like the Alternates response header is superior.

To answer your bullet questions, a client would use multiple Accept headers (or multiple types in a single header - same thing) to let the server know what formats it consumed.  And the use of "text/*", in practice, really just means that the client implements the fallback behaviour of all text/* types: that they can all be treated as text/plain (not particularly valuable, but that's what it means at least).  Using application/* would be meaningless.  image/* is used when the client supports all the common image formats.

Mark.</description>
		<content:encoded><![CDATA[<p>&#8220;When you’re writing a distributed application, you research the services you are going to interact with&#8221;</p>
<p>You think Googlebot was written that way?  Or curl?  Or browsers?  No, they just support HTTP plus whatever data formats they need to get their job done.  But they have no idea which resources will or won&#8217;t emit or consume this data at design time: it&#8217;s all discovered at runtime (save for the initial URI which is provided at configuration time).</p>
<p>I deployed a system a few years ago that exposed streaming data feeds with their own URIs, but the feeds could be expressed in two ways; HTML, for when somebody typed that URI into a browser, and a proprietary compressed binary format for automata interested in consuming that data.  There&#8217;s no magic to it.  That said, it&#8217;s long been recognized that the Accept header is a broken way to do negotiation, and that something like the Alternates response header is superior.</p>
<p>To answer your bullet questions, a client would use multiple Accept headers (or multiple types in a single header - same thing) to let the server know what formats it consumed.  And the use of &#8220;text/*&#8221;, in practice, really just means that the client implements the fallback behaviour of all text/* types: that they can all be treated as text/plain (not particularly valuable, but that&#8217;s what it means at least).  Using application/* would be meaningless.  image/* is used when the client supports all the common image formats.</p>
<p>Mark.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
