<?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: Idempotency Explained</title>
	<atom:link href="http://www.subbu.org/blog/2008/02/idempotency-explained/feed" rel="self" type="application/rss+xml" />
	<link>http://www.subbu.org/blog/2008/02/idempotency-explained</link>
	<description>HTTP, REST and some Cycling</description>
	<lastBuildDate>Fri, 12 Mar 2010 03:24:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Subbu Allamaraju</title>
		<link>http://www.subbu.org/blog/2008/02/idempotency-explained/comment-page-1#comment-218</link>
		<dc:creator>Subbu Allamaraju</dc:creator>
		<pubDate>Sat, 23 Feb 2008 18:29:02 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/02/idempotency-explained/#comment-218</guid>
		<description>Assaf Arkin wrote a ruby wrapper called DeHorrible. Please check this at

&lt;a href=&quot;http://blog.labnotes.org/2007/12/17/dehorrible-restifying-simpledb/&quot; rel=&quot;nofollow&quot;&gt;http://blog.labnotes.org/2007/12/17/dehorrible-restifying-simpledb/&lt;/a&gt;

</description>
		<content:encoded><![CDATA[<p>Assaf Arkin wrote a ruby wrapper called DeHorrible. Please check this at</p>
<p><a href="http://blog.labnotes.org/2007/12/17/dehorrible-restifying-simpledb/" rel="nofollow">http://blog.labnotes.org/2007/12/17/dehorrible-restifying-simpledb/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: M. David Peterson</title>
		<link>http://www.subbu.org/blog/2008/02/idempotency-explained/comment-page-1#comment-217</link>
		<dc:creator>M. David Peterson</dc:creator>
		<pubDate>Sat, 23 Feb 2008 18:18:37 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/02/idempotency-explained/#comment-217</guid>
		<description>Hi Subbu,

Have you put your original RESTful design to code as a wrapper around SDB?  If no, please let me know.  I would be *very* interested in writing/helping to write the interface (I have access to SDB, so this would be done using the live SDB API) if not.  It seems to me that regardless of the backend infrastructure, creating a RESTful &quot;ODBC&quot;-layer that could easily hook into any HTTP(S)-accessible DB would be a *tremendous* benefit to ensure that regardless of the backend implementation, the frontend can maintain a proper RESTful architecture.

Please let me know if this sounds at all interesting to you.  Thanks!
</description>
		<content:encoded><![CDATA[<p>Hi Subbu,</p>
<p>Have you put your original RESTful design to code as a wrapper around SDB?  If no, please let me know.  I would be *very* interested in writing/helping to write the interface (I have access to SDB, so this would be done using the live SDB API) if not.  It seems to me that regardless of the backend infrastructure, creating a RESTful &#8220;ODBC&#8221;-layer that could easily hook into any HTTP(S)-accessible DB would be a *tremendous* benefit to ensure that regardless of the backend implementation, the frontend can maintain a proper RESTful architecture.</p>
<p>Please let me know if this sounds at all interesting to you.  Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Subbu Allamaraju</title>
		<link>http://www.subbu.org/blog/2008/02/idempotency-explained/comment-page-1#comment-216</link>
		<dc:creator>Subbu Allamaraju</dc:creator>
		<pubDate>Fri, 22 Feb 2008 08:49:52 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/02/idempotency-explained/#comment-216</guid>
		<description>Thanks for pointing out that the CreateDomain is an idempotent operation. I overlooked that.

You are right, such an operation should be modeled as a PUT.
</description>
		<content:encoded><![CDATA[<p>Thanks for pointing out that the CreateDomain is an idempotent operation. I overlooked that.</p>
<p>You are right, such an operation should be modeled as a PUT.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tim Olsen</title>
		<link>http://www.subbu.org/blog/2008/02/idempotency-explained/comment-page-1#comment-215</link>
		<dc:creator>Tim Olsen</dc:creator>
		<pubDate>Fri, 22 Feb 2008 08:36:21 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/02/idempotency-explained/#comment-215</guid>
		<description>&gt;All these are idempotent requests. The only &gt;non-idempotent requests in this API are:
&gt;
&gt;    * Create (POST) a domain
&gt;    * Create (POST) attributes

I&#039;m not sure about your version of the API, but Amazon&#039;s docs are pretty clear that creating a domain is idempotent:

&lt;a href=&quot;http://docs.amazonwebservices.com/AmazonSimpleDB/2007-11-07/DeveloperGuide/SDB_API_CreateDomain.html&quot; rel=&quot;nofollow&quot;&gt;http://docs.amazonwebservices.com/AmazonSimpleDB/2007-11-07/DeveloperGuide/SDB_API_CreateDomain.html&lt;/a&gt;

&quot;Note

CreateDomain is an idempotent operation; running it multiple times using the same domain name will not result in an error response.&quot;

Unfortunately, because the API hides the resource behind query arguments (which are mixed with the de-facto method!), you are forced to use a POST here which clients can only assume is non-idempotent.

A much better API for creating domain names would have been:

PUT /domains/mydomainname

The client would then clearly know that the request is idempotent

</description>
		<content:encoded><![CDATA[<p>>All these are idempotent requests. The only >non-idempotent requests in this API are:<br />
><br />
>    * Create (POST) a domain<br />
>    * Create (POST) attributes</p>
<p>I&#8217;m not sure about your version of the API, but Amazon&#8217;s docs are pretty clear that creating a domain is idempotent:</p>
<p><a href="http://docs.amazonwebservices.com/AmazonSimpleDB/2007-11-07/DeveloperGuide/SDB_API_CreateDomain.html" rel="nofollow">http://docs.amazonwebservices.com/AmazonSimpleDB/2007-11-07/DeveloperGuide/SDB_API_CreateDomain.html</a></p>
<p>&#8220;Note</p>
<p>CreateDomain is an idempotent operation; running it multiple times using the same domain name will not result in an error response.&#8221;</p>
<p>Unfortunately, because the API hides the resource behind query arguments (which are mixed with the de-facto method!), you are forced to use a POST here which clients can only assume is non-idempotent.</p>
<p>A much better API for creating domain names would have been:</p>
<p>PUT /domains/mydomainname</p>
<p>The client would then clearly know that the request is idempotent</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: M. David Peterson</title>
		<link>http://www.subbu.org/blog/2008/02/idempotency-explained/comment-page-1#comment-214</link>
		<dc:creator>M. David Peterson</dc:creator>
		<pubDate>Thu, 21 Feb 2008 20:32:29 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/02/idempotency-explained/#comment-214</guid>
		<description>&gt;&gt; I have been looking for this formation. Do you know which libraries do not support pipelining for PUT?

To be honest, now that I actually look it up, I can&#039;t find any references in the .NET documentation (the library I most often use) that specify that GET and HEAD are the only supported verbs for HTTP Pipelines.  For some reason, however, that &quot;fact&quot; has always been stuck in my head when I consider using HTTP Pipelines in my code.  I could very easily be completely off, so really need to dig deeper to verify.

&gt;&gt; On a related note, I noticed the most often-cited page on pipelining at &lt;a href=&quot;http://www.mozilla.org/projects/netlib/http/pipelining-faq.html&quot; rel=&quot;nofollow&quot;&gt;http://www.mozilla.org/projects/netlib/http/pipelining-faq.html&lt;/a&gt; incorrectly implies that PUT is not idempotent. I just wrote to the purported author for clarification.

Nice catch! Nothing worse than &quot;official&quot; docs that are incorrect and or misleading!  It seems that there is a lot of misinformation out there.  If nothing else, regardless of what RFC 2616 does or does not specify, by the time we have this researched out we&#039;ll end up with a much better understanding of the reality of what is/is not supported and why.
</description>
		<content:encoded><![CDATA[<p>>> I have been looking for this formation. Do you know which libraries do not support pipelining for PUT?</p>
<p>To be honest, now that I actually look it up, I can&#8217;t find any references in the .NET documentation (the library I most often use) that specify that GET and HEAD are the only supported verbs for HTTP Pipelines.  For some reason, however, that &#8220;fact&#8221; has always been stuck in my head when I consider using HTTP Pipelines in my code.  I could very easily be completely off, so really need to dig deeper to verify.</p>
<p>>> On a related note, I noticed the most often-cited page on pipelining at <a href="http://www.mozilla.org/projects/netlib/http/pipelining-faq.html" rel="nofollow">http://www.mozilla.org/projects/netlib/http/pipelining-faq.html</a> incorrectly implies that PUT is not idempotent. I just wrote to the purported author for clarification.</p>
<p>Nice catch! Nothing worse than &#8220;official&#8221; docs that are incorrect and or misleading!  It seems that there is a lot of misinformation out there.  If nothing else, regardless of what RFC 2616 does or does not specify, by the time we have this researched out we&#8217;ll end up with a much better understanding of the reality of what is/is not supported and why.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Subbu Allamaraju</title>
		<link>http://www.subbu.org/blog/2008/02/idempotency-explained/comment-page-1#comment-213</link>
		<dc:creator>Subbu Allamaraju</dc:creator>
		<pubDate>Thu, 21 Feb 2008 19:35:07 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/02/idempotency-explained/#comment-213</guid>
		<description>I have been looking for this formation. Do you know which libraries do not support pipelining for PUT?

On a related note, I noticed the most often-cited page on pipelining at &lt;a href=&quot;http://www.mozilla.org/projects/netlib/http/pipelining-faq.html&quot; rel=&quot;nofollow&quot;&gt;http://www.mozilla.org/projects/netlib/http/pipelining-faq.html&lt;/a&gt; incorrectly implies that PUT is not idempotent. I just wrote to the purported author for clarification.
</description>
		<content:encoded><![CDATA[<p>I have been looking for this formation. Do you know which libraries do not support pipelining for PUT?</p>
<p>On a related note, I noticed the most often-cited page on pipelining at <a href="http://www.mozilla.org/projects/netlib/http/pipelining-faq.html" rel="nofollow">http://www.mozilla.org/projects/netlib/http/pipelining-faq.html</a> incorrectly implies that PUT is not idempotent. I just wrote to the purported author for clarification.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: M. David Peterson</title>
		<link>http://www.subbu.org/blog/2008/02/idempotency-explained/comment-page-1#comment-212</link>
		<dc:creator>M. David Peterson</dc:creator>
		<pubDate>Thu, 21 Feb 2008 18:44:05 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/02/idempotency-explained/#comment-212</guid>
		<description>Hi Subbu,

Thanks for taking the time to extend your post!  My only question is what you mean exactly by,

&lt;blockquote&gt;
In my version of SimpeDB, the following requests could safely be pipelined.

Delete (DELETE) a domain
List (GET) domains
Update (PUT) attributes
Delete (DELETE) attributes
Get (DELETE) attributes
Query (GET) items
&lt;/blockquote&gt;

Given that a majority of pre-existing HTTP(S) libraries will not pipeline PUT requests, how then could they be pipelined?

</description>
		<content:encoded><![CDATA[<p>Hi Subbu,</p>
<p>Thanks for taking the time to extend your post!  My only question is what you mean exactly by,</p>
<blockquote><p>
In my version of SimpeDB, the following requests could safely be pipelined.</p>
<p>Delete (DELETE) a domain<br />
List (GET) domains<br />
Update (PUT) attributes<br />
Delete (DELETE) attributes<br />
Get (DELETE) attributes<br />
Query (GET) items
</p></blockquote>
<p>Given that a majority of pre-existing HTTP(S) libraries will not pipeline PUT requests, how then could they be pipelined?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
