<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: You call this REST?</title>
	<link>http://agylen.com/2007/12/16/you-call-this-rest/</link>
	<description>Ugo Cei's Weblog</description>
	<pubDate>Fri, 04 Jul 2008 08:04:19 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<item>
		<title>By: ugo</title>
		<link>http://agylen.com/2007/12/16/you-call-this-rest/#comment-150066</link>
		<dc:creator>ugo</dc:creator>
		<pubDate>Mon, 07 Jan 2008 15:41:28 +0000</pubDate>
		<guid>http://agylen.com/2007/12/16/you-call-this-rest/#comment-150066</guid>
		<description>&gt; POST and GET *MUST* mean something else? or *MUST* use different URI’s if they should mean the same for the pragmatical bypass of the URI-length issue?

Not necessarily. If you are providing a service, you could conceivably allow clients to use POST instead of GET even for requests that do not have side effects and are idempotent.

But if you do so, any guarantee of idempotency for POST requests has to be conveyed through means that are not implicit in the use of the verb itself, so it's not immediately understandable by all clients. Any client that does not understand the language that you use to make that guarantee explicit will not be able to take advantage of it. This, for instance, includes each and every possible kind of cache.

&gt; does it need to use PUT/DELETE next to POST/GET

Not at all. You can implement a RESTful web service using GET and POST only.

&gt; how badly do you rate ?action=name over http://server/actions/name

I rate both badly: URIs should name resources, not actions.

&gt;does it require a full description of the used HTTP error-codes in all cases?
&gt; - does it require the use of template URI’s (or even matrix uris)
&gt; - must there be a wadl or similar formal description?

No, no, and no.

There are two problems with Amazon's API that make it not RESTful at all:

1. Using URIs to name actions instead of resources.
2. Using GET for operations that are not side-effect free.

Granted, they can do whatever they want with their APIs, and XML over HTTP is certainly a step forward over CORBA or some such, but REST is not "just XML over HTTP", it's a set of design principles.

If you're not adhering to those design principles and you're basically doing RPC over XML (which is all fine if that's what you want), but at the same time calling it REST, you're going to be ridiculed once it's obvious that you say you're RESTful because all the cool kids are doing it, not because you "get" it.

It's as simple as that.</description>
		<content:encoded><![CDATA[<p>> POST and GET *MUST* mean something else? or *MUST* use different URI’s if they should mean the same for the pragmatical bypass of the URI-length issue?</p>
<p>Not necessarily. If you are providing a service, you could conceivably allow clients to use POST instead of GET even for requests that do not have side effects and are idempotent.</p>
<p>But if you do so, any guarantee of idempotency for POST requests has to be conveyed through means that are not implicit in the use of the verb itself, so it&#8217;s not immediately understandable by all clients. Any client that does not understand the language that you use to make that guarantee explicit will not be able to take advantage of it. This, for instance, includes each and every possible kind of cache.</p>
<p>> does it need to use PUT/DELETE next to POST/GET</p>
<p>Not at all. You can implement a RESTful web service using GET and POST only.</p>
<p>> how badly do you rate ?action=name over <a href="http://server/actions/name" rel="nofollow">http://server/actions/name</a></p>
<p>I rate both badly: URIs should name resources, not actions.</p>
<p>>does it require a full description of the used HTTP error-codes in all cases?<br />
> - does it require the use of template URI’s (or even matrix uris)<br />
> - must there be a wadl or similar formal description?</p>
<p>No, no, and no.</p>
<p>There are two problems with Amazon&#8217;s API that make it not RESTful at all:</p>
<p>1. Using URIs to name actions instead of resources.<br />
2. Using GET for operations that are not side-effect free.</p>
<p>Granted, they can do whatever they want with their APIs, and XML over HTTP is certainly a step forward over CORBA or some such, but REST is not &#8220;just XML over HTTP&#8221;, it&#8217;s a set of design principles.</p>
<p>If you&#8217;re not adhering to those design principles and you&#8217;re basically doing RPC over XML (which is all fine if that&#8217;s what you want), but at the same time calling it REST, you&#8217;re going to be ridiculed once it&#8217;s obvious that you say you&#8217;re RESTful because all the cool kids are doing it, not because you &#8220;get&#8221; it.</p>
<p>It&#8217;s as simple as that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marc Portier</title>
		<link>http://agylen.com/2007/12/16/you-call-this-rest/#comment-150064</link>
		<dc:creator>Marc Portier</dc:creator>
		<pubDate>Mon, 07 Jan 2008 15:03:05 +0000</pubDate>
		<guid>http://agylen.com/2007/12/16/you-call-this-rest/#comment-150064</guid>
		<description>Interesting viewpoint, but without looking at the SimpleDB spec (which I didn't) the quote in your post doesn't really give me anything to refute their claim to fame, or does it?

There also isn't a real list of properties IMHO or other grading system to mesure how rest-full an API really is, or is there?  Where is the ReST police (and do we need it?)

What are the proper ReST qualifying rules/indicators of an API ?
- POST and GET *MUST* mean something else? or *MUST* use different URI's if they should mean the same for the pragmatical bypass of the URI-length issue?
- does it need to use PUT/DELETE next to POST/GET, or at least the ?_method= tunneling?
- how badly do you rate ?action=name over http://server/actions/name
- does it require a full description of the used HTTP error-codes in all cases?
- does it require the use of template URI's (or even matrix uris)
- must there be a wadl or similar formal description?
- other?

To be clear: I *do* agree that the term gets overused and easily applied as a way to indicate some geek-level-coolness, but deep down in even the most simple one of this fast growing number of ReST-API's out there I see people officially indicating with this ReST label that their use of HTTP/XML is intentional, thought off, broader then browser-only access and most importantly: no coincidence!

Looking back at where we come from I think that such is a remarkable achievement.</description>
		<content:encoded><![CDATA[<p>Interesting viewpoint, but without looking at the SimpleDB spec (which I didn&#8217;t) the quote in your post doesn&#8217;t really give me anything to refute their claim to fame, or does it?</p>
<p>There also isn&#8217;t a real list of properties IMHO or other grading system to mesure how rest-full an API really is, or is there?  Where is the ReST police (and do we need it?)</p>
<p>What are the proper ReST qualifying rules/indicators of an API ?<br />
- POST and GET *MUST* mean something else? or *MUST* use different URI&#8217;s if they should mean the same for the pragmatical bypass of the URI-length issue?<br />
- does it need to use PUT/DELETE next to POST/GET, or at least the ?_method= tunneling?<br />
- how badly do you rate ?action=name over <a href="http://server/actions/name" rel="nofollow">http://server/actions/name</a><br />
- does it require a full description of the used HTTP error-codes in all cases?<br />
- does it require the use of template URI&#8217;s (or even matrix uris)<br />
- must there be a wadl or similar formal description?<br />
- other?</p>
<p>To be clear: I *do* agree that the term gets overused and easily applied as a way to indicate some geek-level-coolness, but deep down in even the most simple one of this fast growing number of ReST-API&#8217;s out there I see people officially indicating with this ReST label that their use of HTTP/XML is intentional, thought off, broader then browser-only access and most importantly: no coincidence!</p>
<p>Looking back at where we come from I think that such is a remarkable achievement.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
