<?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: Hypermedia as the Engine of Application State</title>
	<atom:link href="http://barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/feed/" rel="self" type="application/rss+xml" />
	<link>http://barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/</link>
	<description>… and there is much to be learned</description>
	<lastBuildDate>Sun, 06 May 2012 15:09:26 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: Notes on RESTful APIs &#8211; wooptoo</title>
		<link>http://barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/comment-page-1/#comment-85822</link>
		<dc:creator>Notes on RESTful APIs &#8211; wooptoo</dc:creator>
		<pubDate>Tue, 17 Apr 2012 06:29:11 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/#comment-85822</guid>
		<description>[...] Hypermedia as the Engine of Application State [...]</description>
		<content:encoded><![CDATA[<p>[...] Hypermedia as the Engine of Application State [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Quora</title>
		<link>http://barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/comment-page-1/#comment-85801</link>
		<dc:creator>Quora</dc:creator>
		<pubDate>Fri, 24 Feb 2012 03:12:58 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/#comment-85801</guid>
		<description>&lt;strong&gt;What are some guidelines to build a good RESTful API?...&lt;/strong&gt;

To begin with, the term REST has unfortunately been hijacked to the point where it&#039;s hard to know what someone might be referring to when they use it. I am going to assume we&#039;re talking about REST as Roy Fielding meant it when he coined the acronym. ...</description>
		<content:encoded><![CDATA[<p><strong>What are some guidelines to build a good RESTful API?&#8230;</strong></p>
<p>To begin with, the term REST has unfortunately been hijacked to the point where it&#8217;s hard to know what someone might be referring to when they use it. I am going to assume we&#8217;re talking about REST as Roy Fielding meant it when he coined the acronym. &#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: REST的资源定位 &#8211; Fan&#039;s blog</title>
		<link>http://barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/comment-page-1/#comment-85590</link>
		<dc:creator>REST的资源定位 &#8211; Fan&#039;s blog</dc:creator>
		<pubDate>Mon, 30 Aug 2010 09:48:53 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/#comment-85590</guid>
		<description>&lt;p&gt;[...] 对于一个Web应用，URI是很重要的一部分，这包括他的schema定义、URI的build以及路由，涉及到web开发的方方面面。REST里面有个概念：hypermedia as the engine of application state。以上面的例子为例，hypermedia指的是server端返回的一个指向书详细信息的link，这个link是在server端construct的，client端拿到这个link后，就知道下一步跳转的方向，这样flow运行下去。整个应用就如同一状态机一样，从一个状态跳到另外一个状态。如果拿到的比如是孤立的信息，比如aLibery和aBookId，这时候客户端就要知道如何build link，而这一般都不是很容易的事情，也增加了系统的耦合度。而server端build href后，URI schema变化的代价就更小。这样我们就不必拘泥于web 2.0所说的：一个href应该永远可以访问。 [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] 对于一个Web应用，URI是很重要的一部分，这包括他的schema定义、URI的build以及路由，涉及到web开发的方方面面。REST里面有个概念：hypermedia as the engine of application state。以上面的例子为例，hypermedia指的是server端返回的一个指向书详细信息的link，这个link是在server端construct的，client端拿到这个link后，就知道下一步跳转的方向，这样flow运行下去。整个应用就如同一状态机一样，从一个状态跳到另外一个状态。如果拿到的比如是孤立的信息，比如aLibery和aBookId，这时候客户端就要知道如何build link，而这一般都不是很容易的事情，也增加了系统的耦合度。而server端build href后，URI schema变化的代价就更小。这样我们就不必拘泥于web 2.0所说的：一个href应该永远可以访问。 [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cookies and the RESTful API &#171; Mike Pearce &#8211; blog</title>
		<link>http://barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/comment-page-1/#comment-85588</link>
		<dc:creator>Cookies and the RESTful API &#171; Mike Pearce &#8211; blog</dc:creator>
		<pubDate>Tue, 24 Aug 2010 16:26:22 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/#comment-85588</guid>
		<description>&lt;p&gt;[...] point to your entire API and from there, they can navigate the whole damn thing. Many people have blogged on this (including the big man himself), so I shan&#8217;t go into it right now, take a look at [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] point to your entire API and from there, they can navigate the whole damn thing. Many people have blogged on this (including the big man himself), so I shan&#8217;t go into it right now, take a look at [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Williams - Vertical Slicing</title>
		<link>http://barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/comment-page-1/#comment-84582</link>
		<dc:creator>Peter Williams - Vertical Slicing</dc:creator>
		<pubDate>Mon, 12 Jul 2010 15:39:04 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/#comment-84582</guid>
		<description>&lt;p&gt;[...] design can introduce excessive coupling which will eat up most of the advantages described above. Hypermedia &#8211; or more precisely, following the REST architectural style &#8211; is the best way i know to [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] design can introduce excessive coupling which will eat up most of the advantages described above. Hypermedia &#8211; or more precisely, following the REST architectural style &#8211; is the best way i know to [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Williams</title>
		<link>http://barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/comment-page-1/#comment-62919</link>
		<dc:creator>Peter Williams</dc:creator>
		<pubDate>Wed, 22 Oct 2008 21:32:05 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/#comment-62919</guid>
		<description>&lt;p&gt;Mr Wilson,&lt;/p&gt;

&lt;p&gt;I think in the situation you describe using URIs as the IDs is really compelling. The redirection capability of HTTP can be leveraged to provide excellent forward compatibility.&lt;/p&gt;

&lt;p&gt;If your future URI revamp is so simple that the clients would be able to handle, you could implement a simple mod_rewrite rule on the server and not have to mess with the clients at all. If however you ever need to revamp the URI patterns is some really fundamental way you can create, as part of the migration, a mapping between the old URIs and the equivalent new URIs.&lt;/p&gt;

&lt;p&gt;That combined with a client that respects the redirect type and you have a really scalable system. By that I mean, any client that stores URIs should updated them if it ever gets a permanent redirect when requesting that URI. If the client has some URI and a year later makes a GET request against it and receives a 301 &#8220;Moved Permanently&#8221;, it would updated that replace the old URI with the new URI in it&#8217;s internal storage.&lt;/p&gt;

&lt;p&gt;These mechanisms mean that you do not need a non-standard, or out-of-band, way to communicate URI pattern changes to the clients.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Mr Wilson,</p>
<p>I think in the situation you describe using URIs as the IDs is really compelling. The redirection capability of HTTP can be leveraged to provide excellent forward compatibility.</p>
<p>If your future URI revamp is so simple that the clients would be able to handle, you could implement a simple mod_rewrite rule on the server and not have to mess with the clients at all. If however you ever need to revamp the URI patterns is some really fundamental way you can create, as part of the migration, a mapping between the old URIs and the equivalent new URIs.</p>
<p>That combined with a client that respects the redirect type and you have a really scalable system. By that I mean, any client that stores URIs should updated them if it ever gets a permanent redirect when requesting that URI. If the client has some URI and a year later makes a GET request against it and receives a 301 &#8220;Moved Permanently&#8221;, it would updated that replace the old URI with the new URI in it&#8217;s internal storage.</p>
<p>These mechanisms mean that you do not need a non-standard, or out-of-band, way to communicate URI pattern changes to the clients.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Randy Wilson</title>
		<link>http://barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/comment-page-1/#comment-62911</link>
		<dc:creator>Randy Wilson</dc:creator>
		<pubDate>Wed, 22 Oct 2008 17:20:32 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/#comment-62911</guid>
		<description>&lt;p&gt;I&#039;ve got a situation where we have a billion resources (data extracted from genealogical records) that need long-lived IDs so that people in our &quot;tree&quot; can point back at the people extracted from our &quot;sources&quot;.&lt;/p&gt;

&lt;p&gt;If we change our root URI, all the links bust.  If our clients use &quot;base URI + id&quot; to construct URIs, then when we change, at least they just have to change the base URI instead of having to fix up a billion stored links (since the stored IDs would not have changed, though the URI did).  [BTW, we&#039;re looking at using something similar to &quot;ark&quot; to resolve broken links from the ids using a namespace at the beginning of the and a &quot;resolver&quot; service].&lt;/p&gt;

&lt;p&gt;When the clients are only using URIs temporarily, then it makes sense for them to get those full URIs from the server on the fly.  But if they are storing them, then I&#039;m still struggling with the best approach.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I&#8217;ve got a situation where we have a billion resources (data extracted from genealogical records) that need long-lived IDs so that people in our &#8220;tree&#8221; can point back at the people extracted from our &#8220;sources&#8221;.</p>
<p>If we change our root URI, all the links bust.  If our clients use &#8220;base URI + id&#8221; to construct URIs, then when we change, at least they just have to change the base URI instead of having to fix up a billion stored links (since the stored IDs would not have changed, though the URI did).  [BTW, we're looking at using something similar to "ark" to resolve broken links from the ids using a namespace at the beginning of the and a "resolver" service].</p>
<p>When the clients are only using URIs temporarily, then it makes sense for them to get those full URIs from the server on the fly.  But if they are storing them, then I&#8217;m still struggling with the best approach.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Refactoring Mockingbird: Hypermedia as the Engine of Application State - Troy Gilbert</title>
		<link>http://barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/comment-page-1/#comment-62792</link>
		<dc:creator>Refactoring Mockingbird: Hypermedia as the Engine of Application State - Troy Gilbert</dc:creator>
		<pubDate>Tue, 14 Oct 2008 04:34:57 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/#comment-62792</guid>
		<description>&lt;p&gt;[...] Peter Williams - Hypermedia as the Engine of Application State. [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] Peter Williams &#8211; Hypermedia as the Engine of Application State. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The Hypertext Constraint at Analysis from the Bottom Up</title>
		<link>http://barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/comment-page-1/#comment-61970</link>
		<dc:creator>The Hypertext Constraint at Analysis from the Bottom Up</dc:creator>
		<pubDate>Fri, 05 Sep 2008 22:41:40 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/#comment-61970</guid>
		<description>&lt;p&gt;[...] Peter Williams on The Hypertext Constraint [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] Peter Williams on The Hypertext Constraint [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: links for 2008-05-17 &#171; Object neo = neo Object</title>
		<link>http://barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/comment-page-1/#comment-51831</link>
		<dc:creator>links for 2008-05-17 &#171; Object neo = neo Object</dc:creator>
		<pubDate>Sat, 17 May 2008 23:31:01 +0000</pubDate>
		<guid isPermaLink="false">http://pezra.barelyenough.org/blog/2007/05/hypermedia-as-the-engine-of-application-state/#comment-51831</guid>
		<description>&lt;p&gt;[...] Peter Williams - Hypermedia as the Engine of Application State (tags: restful webservices architecture) [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] Peter Williams &#8211; Hypermedia as the Engine of Application State (tags: restful webservices architecture) [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

