<?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: Another REST Anti-Pattern</title>
	<atom:link href="http://www.subbu.org/blog/2008/07/another-rest-anti-pattern/feed" rel="self" type="application/rss+xml" />
	<link>http://www.subbu.org/blog/2008/07/another-rest-anti-pattern</link>
	<description>HTTP, REST and some Cycling</description>
	<pubDate>Thu, 20 Nov 2008 20:54:06 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7-beta3</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Stephen Waits</title>
		<link>http://www.subbu.org/blog/2008/07/another-rest-anti-pattern/comment-page-1#comment-294</link>
		<dc:creator>Stephen Waits</dc:creator>
		<pubDate>Sat, 12 Jul 2008 05:42:55 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/07/another-rest-anti-pattern/#comment-294</guid>
		<description>REST, including the :method =&gt; :hacks for browsers not supporting all of the "verbs", has been a huge counterproductive diversion for DHH and many of the Rails folks.

Nobody seems capable of taking a step back.  If they did, they'd realize that (real) end-users don't give a shit about REST, aside from maybe pretty URLs, which have little to do with it.

Granted, because so much work went into it, you pretty much need to get on the bandwagon when doing Rails these days.  It'll just make your life easier.  And yes, ultimately, that makes web services easier to code.

My point is, in the 1.? -&gt; 1.2 timeframe, and even today, there were way bigger fish to fry.

Rails people tend to get distracted by shiny things.
</description>
		<content:encoded><![CDATA[<p>REST, including the :method => :hacks for browsers not supporting all of the &#8220;verbs&#8221;, has been a huge counterproductive diversion for DHH and many of the Rails folks.</p>
<p>Nobody seems capable of taking a step back.  If they did, they&#8217;d realize that (real) end-users don&#8217;t give a shit about REST, aside from maybe pretty URLs, which have little to do with it.</p>
<p>Granted, because so much work went into it, you pretty much need to get on the bandwagon when doing Rails these days.  It&#8217;ll just make your life easier.  And yes, ultimately, that makes web services easier to code.</p>
<p>My point is, in the 1.? -> 1.2 timeframe, and even today, there were way bigger fish to fry.</p>
<p>Rails people tend to get distracted by shiny things.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Grempe</title>
		<link>http://www.subbu.org/blog/2008/07/another-rest-anti-pattern/comment-page-1#comment-293</link>
		<dc:creator>Grempe</dc:creator>
		<pubDate>Fri, 11 Jul 2008 23:48:01 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/07/another-rest-anti-pattern/#comment-293</guid>
		<description>Perhaps we should instead be asking why browsers won't support PUT and DELETE natively?
</description>
		<content:encoded><![CDATA[<p>Perhaps we should instead be asking why browsers won&#8217;t support PUT and DELETE natively?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Subbu Allamaraju</title>
		<link>http://www.subbu.org/blog/2008/07/another-rest-anti-pattern/comment-page-1#comment-292</link>
		<dc:creator>Subbu Allamaraju</dc:creator>
		<pubDate>Fri, 11 Jul 2008 18:33:03 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/07/another-rest-anti-pattern/#comment-292</guid>
		<description>I see your point.
</description>
		<content:encoded><![CDATA[<p>I see your point.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Assaf</title>
		<link>http://www.subbu.org/blog/2008/07/another-rest-anti-pattern/comment-page-1#comment-291</link>
		<dc:creator>Assaf</dc:creator>
		<pubDate>Fri, 11 Jul 2008 18:11:42 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/07/another-rest-anti-pattern/#comment-291</guid>
		<description>Check out ActiveResource (also part of Rails). See the verbs?

By design Rails accepts all the methods. By design Rails uses these methods when it can.

If the world switched over to HTML 5 tomorrow, Rails developers would just run gem update rails.

That's because the hack is buried in the framework, but your application code is written around verb semantics.

So it deals with the unfortunate incident that is web browsers. It supports clients that can use HTTP methods properly. And it teaches you to develop code around the uniform interface.
</description>
		<content:encoded><![CDATA[<p>Check out ActiveResource (also part of Rails). See the verbs?</p>
<p>By design Rails accepts all the methods. By design Rails uses these methods when it can.</p>
<p>If the world switched over to HTML 5 tomorrow, Rails developers would just run gem update rails.</p>
<p>That&#8217;s because the hack is buried in the framework, but your application code is written around verb semantics.</p>
<p>So it deals with the unfortunate incident that is web browsers. It supports clients that can use HTTP methods properly. And it teaches you to develop code around the uniform interface.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aristotle Pagaltzis</title>
		<link>http://www.subbu.org/blog/2008/07/another-rest-anti-pattern/comment-page-1#comment-290</link>
		<dc:creator>Aristotle Pagaltzis</dc:creator>
		<pubDate>Fri, 11 Jul 2008 18:07:20 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/07/another-rest-anti-pattern/#comment-290</guid>
		<description>I don’t see a problem. POST makes fewer guarantees than PUT or DELETE (to be precise, it makes none), so intermediaries won’t make mistaken assumptions about what conditions hold true after such a request. Sure, by tunnelling other methods over POST, you lose the advantages that the stronger guarantees of those methods confer. But as Roy himself has said, it is well possible to design a perfectly RESTful system with just GET and POST.

What you are calling an anti-pattern is just suboptimal design. It is certainly not on equal footing with the mistakes than Stefan listed such as GET with side-effects.
</description>
		<content:encoded><![CDATA[<p>I don’t see a problem. POST makes fewer guarantees than PUT or DELETE (to be precise, it makes none), so intermediaries won’t make mistaken assumptions about what conditions hold true after such a request. Sure, by tunnelling other methods over POST, you lose the advantages that the stronger guarantees of those methods confer. But as Roy himself has said, it is well possible to design a perfectly RESTful system with just GET and POST.</p>
<p>What you are calling an anti-pattern is just suboptimal design. It is certainly not on equal footing with the mistakes than Stefan listed such as GET with side-effects.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Subbu Allamaraju</title>
		<link>http://www.subbu.org/blog/2008/07/another-rest-anti-pattern/comment-page-1#comment-289</link>
		<dc:creator>Subbu Allamaraju</dc:creator>
		<pubDate>Fri, 11 Jul 2008 10:40:19 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/07/another-rest-anti-pattern/#comment-289</guid>
		<description>As commented in my response to Stefan above, if the only intent is to work-around HTML forms limitations, this approach does not make sense.
</description>
		<content:encoded><![CDATA[<p>As commented in my response to Stefan above, if the only intent is to work-around HTML forms limitations, this approach does not make sense.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hari</title>
		<link>http://www.subbu.org/blog/2008/07/another-rest-anti-pattern/comment-page-1#comment-288</link>
		<dc:creator>Hari</dc:creator>
		<pubDate>Fri, 11 Jul 2008 10:32:50 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/07/another-rest-anti-pattern/#comment-288</guid>
		<description>Same with PUT !
I think its a well understood idea in the Rails community that this is  only a pragmatic workaround for limitations the browser in its current form imposes.
If you are using ActiveResource or any other Http client library you don't have to do this and could send a put/delete request.

Now that you have made a strong remark it will help to know what your recommendations are for performing restful actions from within a browser?
</description>
		<content:encoded><![CDATA[<p>Same with PUT !<br />
I think its a well understood idea in the Rails community that this is  only a pragmatic workaround for limitations the browser in its current form imposes.<br />
If you are using ActiveResource or any other Http client library you don&#8217;t have to do this and could send a put/delete request.</p>
<p>Now that you have made a strong remark it will help to know what your recommendations are for performing restful actions from within a browser?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Subbu Allamaraju</title>
		<link>http://www.subbu.org/blog/2008/07/another-rest-anti-pattern/comment-page-1#comment-287</link>
		<dc:creator>Subbu Allamaraju</dc:creator>
		<pubDate>Fri, 11 Jul 2008 07:21:29 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/07/another-rest-anti-pattern/#comment-287</guid>
		<description>True, but that is like RPC where the URI or a header includes the verb used by the server application while the client and the network need to treat it as an HTTP POST. This is not very much different from how WS-Transfer wants to do PUTs and DELETEs. I am just questioning the intent of such features.

Such approaches can be justified if the intent was to let the same server code handle HTML forms based clients as well as non-forms based clients that can support real PUT and DELETE.

That may be true for the GData case. But since GData APIs are hosted by Google itself, I would be surprised if their proxies are not configured to support PUTs and DELETEs.

</description>
		<content:encoded><![CDATA[<p>True, but that is like RPC where the URI or a header includes the verb used by the server application while the client and the network need to treat it as an HTTP POST. This is not very much different from how WS-Transfer wants to do PUTs and DELETEs. I am just questioning the intent of such features.</p>
<p>Such approaches can be justified if the intent was to let the same server code handle HTML forms based clients as well as non-forms based clients that can support real PUT and DELETE.</p>
<p>That may be true for the GData case. But since GData APIs are hosted by Google itself, I would be surprised if their proxies are not configured to support PUTs and DELETEs.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Yokomizo</title>
		<link>http://www.subbu.org/blog/2008/07/another-rest-anti-pattern/comment-page-1#comment-286</link>
		<dc:creator>Daniel Yokomizo</dc:creator>
		<pubDate>Fri, 11 Jul 2008 04:49:33 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/07/another-rest-anti-pattern/#comment-286</guid>
		<description>So what should a RESTful application, one accessed via browser, do? I'm not talking about the particular example of creating a form for links, but if I have a plain old form to update a resource how should I do it? It would only be an Anti-Pattern if it wasn't used to overcome limitations on HTML.
</description>
		<content:encoded><![CDATA[<p>So what should a RESTful application, one accessed via browser, do? I&#8217;m not talking about the particular example of creating a form for links, but if I have a plain old form to update a resource how should I do it? It would only be an Anti-Pattern if it wasn&#8217;t used to overcome limitations on HTML.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stefan Tilkov</title>
		<link>http://www.subbu.org/blog/2008/07/another-rest-anti-pattern/comment-page-1#comment-285</link>
		<dc:creator>Stefan Tilkov</dc:creator>
		<pubDate>Fri, 11 Jul 2008 01:18:07 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2008/07/another-rest-anti-pattern/#comment-285</guid>
		<description>Interesting - I see the problems with this approach (e.g. tricking firewalls into letting something through they'd normally forbid), but I don't agree it's worthless: it lets the server-side code handle DELETEs issued via e.g. curl, wget or some application client in the same way as those issued from a browser.
</description>
		<content:encoded><![CDATA[<p>Interesting - I see the problems with this approach (e.g. tricking firewalls into letting something through they&#8217;d normally forbid), but I don&#8217;t agree it&#8217;s worthless: it lets the server-side code handle DELETEs issued via e.g. curl, wget or some application client in the same way as those issued from a browser.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
