<?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: REST vs HTTP+POX vs SOAP</title>
	<atom:link href="http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/</link>
	<description>Thoughts on PHP, eBay, and too many technical topics for my family's liking.</description>
	<lastBuildDate>Thu, 18 Feb 2010 23:21:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Adam Trachtenberg</title>
		<link>http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/comment-page-1/#comment-324554</link>
		<dc:creator>Adam Trachtenberg</dc:creator>
		<pubDate>Thu, 18 Feb 2010 23:21:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/#comment-324554</guid>
		<description>Vitaly --

You must not have read the comments, where I clarify my post to say:

&quot;This is not what *I* define as REST, HTTP+POX, and SOAP, or believe the “correct” definitions are.

However, in my opinion, based on talking up eBay web services at many places for the past 2.5 years, if you went to a couple of web conferences and polled the attendees on their definitions of the terms, the results would be what I describe above.&quot;

Things have changed a lot around REST in the past 4 years, so I don&#039;t think I would make those statements today, but I still contend that was common opinion in 2006.</description>
		<content:encoded><![CDATA[<p>Vitaly &#8211;</p>
<p>You must not have read the comments, where I clarify my post to say:</p>
<p>&#8220;This is not what *I* define as REST, HTTP+POX, and SOAP, or believe the “correct” definitions are.</p>
<p>However, in my opinion, based on talking up eBay web services at many places for the past 2.5 years, if you went to a couple of web conferences and polled the attendees on their definitions of the terms, the results would be what I describe above.&#8221;</p>
<p>Things have changed a lot around REST in the past 4 years, so I don&#8217;t think I would make those statements today, but I still contend that was common opinion in 2006.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vitaly Kushner</title>
		<link>http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/comment-page-1/#comment-324547</link>
		<dc:creator>Vitaly Kushner</dc:creator>
		<pubDate>Thu, 18 Feb 2010 19:45:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/#comment-324547</guid>
		<description>REST == HTTP GET ??? Can&#039;t be further from the truth. To the contrary REST encourages proper use of HTTP verbs. For example Rails REST implementation uses GET, POST, PUT and DELETE.</description>
		<content:encoded><![CDATA[<p>REST == HTTP GET ??? Can&#8217;t be further from the truth. To the contrary REST encourages proper use of HTTP verbs. For example Rails REST implementation uses GET, POST, PUT and DELETE.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dick Dowdell</title>
		<link>http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/comment-page-1/#comment-64571</link>
		<dc:creator>Dick Dowdell</dc:creator>
		<pubDate>Fri, 09 Mar 2007 17:33:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/#comment-64571</guid>
		<description>I was surprised by the initial definition of REST given at the beginning of this discussion.  I don&#039;t believe that Roy Thomas Fielding (http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm) would agree at all.

REST assumes a data-centric view of applications and assumes that PUT (create), POST (update), and DELETE (delete) can be used to cover all of the transformations a data resource might undergo.  GET is, of course, used to retrieve data resources.

Adam is probably correct in saying that most sites purporting to be RESTful use only GET, and that they make excessive use of HTTP query parameters.  Personally, I would call them RESTful query applications, not full REST applications.

Perhaps I&#039;m oversimplifying, but the only query parameters in my REST applications are used to identify whether the response should be the default XML, or XHTML for display formatting.  The URL, itself, identifies the data resource --- and the HTTP verb identifies what is to be done with/to that resource.  PUT and POST carry their data in XML format in the post data stream.  My Web user interfaces are AJAX (built with the GWT) so there is no difficulty working with XML.</description>
		<content:encoded><![CDATA[<p>I was surprised by the initial definition of REST given at the beginning of this discussion.  I don&#8217;t believe that Roy Thomas Fielding (<a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm" rel="nofollow">http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm</a>) would agree at all.</p>
<p>REST assumes a data-centric view of applications and assumes that PUT (create), POST (update), and DELETE (delete) can be used to cover all of the transformations a data resource might undergo.  GET is, of course, used to retrieve data resources.</p>
<p>Adam is probably correct in saying that most sites purporting to be RESTful use only GET, and that they make excessive use of HTTP query parameters.  Personally, I would call them RESTful query applications, not full REST applications.</p>
<p>Perhaps I&#8217;m oversimplifying, but the only query parameters in my REST applications are used to identify whether the response should be the default XML, or XHTML for display formatting.  The URL, itself, identifies the data resource &#8212; and the HTTP verb identifies what is to be done with/to that resource.  PUT and POST carry their data in XML format in the post data stream.  My Web user interfaces are AJAX (built with the GWT) so there is no difficulty working with XML.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hsiu-Fan Wang</title>
		<link>http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/comment-page-1/#comment-20093</link>
		<dc:creator>Hsiu-Fan Wang</dc:creator>
		<pubDate>Tue, 07 Nov 2006 02:41:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/#comment-20093</guid>
		<description>I stand corrected on the ebay front :) I guess I never actually looked

That said, perhaps the lack of PUT/DELETE is caused by the lack of browser support? (And they&#039;ve been kind of the hidden stepchildren of the HTTP verbs...) I definitely do agree with your point and want to apologize for jumping on you. It just seemed like you were stating your definition for &quot;what is REST&quot; as opposed to  &quot;how is REST implemented&quot;.</description>
		<content:encoded><![CDATA[<p>I stand corrected on the ebay front :) I guess I never actually looked</p>
<p>That said, perhaps the lack of PUT/DELETE is caused by the lack of browser support? (And they&#8217;ve been kind of the hidden stepchildren of the HTTP verbs&#8230;) I definitely do agree with your point and want to apologize for jumping on you. It just seemed like you were stating your definition for &#8220;what is REST&#8221; as opposed to  &#8220;how is REST implemented&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam Trachtenberg</title>
		<link>http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/comment-page-1/#comment-19981</link>
		<dc:creator>Adam Trachtenberg</dc:creator>
		<pubDate>Mon, 06 Nov 2006 21:31:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/#comment-19981</guid>
		<description>Hsiu-Fan --

There are multiple sites that describe REST using POST, PUT, and DELETE, but I find very few (if any) major sites that deploy &quot;REST Web services&quot; using POST, PUT, and DELETE. Can you name some?

Leonard listed S3 and GData. Those are relatively new and GData is based on Atom, so it&#039;s not as if Google made that up on their own.

Also, eBay web services are *far* from read only! We have allowed read and write operations since 2001! Over 50% of eBay item listings come through web services.</description>
		<content:encoded><![CDATA[<p>Hsiu-Fan &#8211;</p>
<p>There are multiple sites that describe REST using POST, PUT, and DELETE, but I find very few (if any) major sites that deploy &#8220;REST Web services&#8221; using POST, PUT, and DELETE. Can you name some?</p>
<p>Leonard listed S3 and GData. Those are relatively new and GData is based on Atom, so it&#8217;s not as if Google made that up on their own.</p>
<p>Also, eBay web services are *far* from read only! We have allowed read and write operations since 2001! Over 50% of eBay item listings come through web services.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hsiu-Fan Wang</title>
		<link>http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/comment-page-1/#comment-19948</link>
		<dc:creator>Hsiu-Fan Wang</dc:creator>
		<pubDate>Mon, 06 Nov 2006 18:45:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/#comment-19948</guid>
		<description>I would just like to chime in to agree with Keith and Leonard. REST incorporates all of the HTTP verbs.

A quick google of HTTP REST nets me quite a few pages that involve the words POST, PUT and DELETE, so I am inclined to think that the people writing about REST web APIs disagree with you :)

And again, I think alot of the confusion is that eBay web services by nature are read only, making it seem like all &quot;REST&quot; interfaces only use GET and huge fat query strings. That said, I must argue that REST interfaces are a very fuzzy architectural notion, in much the same way that MVC or client/server architectures are ideas and not specifications. There is no spec for what verbs a REST interface must represent!</description>
		<content:encoded><![CDATA[<p>I would just like to chime in to agree with Keith and Leonard. REST incorporates all of the HTTP verbs.</p>
<p>A quick google of HTTP REST nets me quite a few pages that involve the words POST, PUT and DELETE, so I am inclined to think that the people writing about REST web APIs disagree with you :)</p>
<p>And again, I think alot of the confusion is that eBay web services by nature are read only, making it seem like all &#8220;REST&#8221; interfaces only use GET and huge fat query strings. That said, I must argue that REST interfaces are a very fuzzy architectural notion, in much the same way that MVC or client/server architectures are ideas and not specifications. There is no spec for what verbs a REST interface must represent!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam Trachtenberg</title>
		<link>http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/comment-page-1/#comment-19915</link>
		<dc:creator>Adam Trachtenberg</dc:creator>
		<pubDate>Mon, 06 Nov 2006 15:42:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/#comment-19915</guid>
		<description>Hello Keith and Leonard --

I gotta run to work, so this answer is going to be short, but I guess I should have be more clear in my post. This is not what *I* define as REST, HTTP+POX, and SOAP, or believe the &quot;correct&quot; definitions are.

However, in my opinion, based on talking up eBay web services at many places for the past 2.5 years, if you went to a couple of web conferences and polled the attendees on their definitions of the terms, the results would be what I describe above.

I will post more when I get more free time later today, as I am interested in continuing this discussion.</description>
		<content:encoded><![CDATA[<p>Hello Keith and Leonard &#8211;</p>
<p>I gotta run to work, so this answer is going to be short, but I guess I should have be more clear in my post. This is not what *I* define as REST, HTTP+POX, and SOAP, or believe the &#8220;correct&#8221; definitions are.</p>
<p>However, in my opinion, based on talking up eBay web services at many places for the past 2.5 years, if you went to a couple of web conferences and polled the attendees on their definitions of the terms, the results would be what I describe above.</p>
<p>I will post more when I get more free time later today, as I am interested in continuing this discussion.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Leonard Richardson</title>
		<link>http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/comment-page-1/#comment-19886</link>
		<dc:creator>Leonard Richardson</dc:creator>
		<pubDate>Mon, 06 Nov 2006 14:17:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/#comment-19886</guid>
		<description>I&#039;m still digesting what you say about SOAP but I gotta disagree with those definitions of REST and HTTP+POX. (I don&#039;t know whether you hold these opinions or are just reporting  what others say when you discuss the matter.) They&#039;re fairly common definitions and are remarkably close to what I used to think,  so I think it&#039;s worth taking them on.

Most of the web services you describe as REST are in fact REST, because a lot of public web services only let you fetch data. They use GET in a RESTful way because all their URIs are safe. But if a service lets you change the dataset it needs to use the other HTTP actions (PUT, DELETE, and POST, the latter of which still confuses me) for that. The best way to do this is to structure the URIs into resources, so that if you want to get the weblog entry at URI &quot;/weblog/posts/100&quot;, you send a GET request to that URI, and if you want to delete that entry you send a DELETE request to the same URI.

So the Amazon E-Commerce Service is almost entirely REST. It&#039;s full of URI query-string options for searching and getting info from the Amazon product database,. Any query you can construct from the options describes a resource (a particular slice of the database) and GETting it gives you an XML depiction of that resource. But it also exposes some options called CartAdd, CartClear, etc. which store data in your shopping cart on the server side. This violates REST. 

GET is for getting resources, and using it to make changes is dangerous. You may remember the flap that resulted when Google released a browser-side cache that followed links. It followed links like &quot;/weblog/delete?id=100&quot; and triggered actions the user hadn&#039;t requested. &quot;Cart&quot; can be considered a resource that you can add, modify, delete, etc. but &quot;CartAdd&quot; is an operation. And in fact you&#039;ll see people saying that AECS is not REST for this reason.

Near as I can tell HTTP+POX was invented by REST eggheads to shift off a bunch of services that didn&#039;t meet the REST criteria, like the del.icio.us API, the Flickr API, the non-RESTful part of AWS, and so on. But since the term was coined by REST fanatics as a wall around REST, there&#039;s no clear line of demarcation on the other side. 

HTTP+POX services and SOAP services both have rules about what XML documents you can send under what circumstances. You could have a pathological service that was more idiosyncratic than SOAP in the XML it accepted. I&#039;d say that would be worse than SOAP, and I wouldn&#039;t want to call it HTTP+POX because then SOAP would be HTTP+POX too. That&#039;s why I&#039;m looking for another way to make the distinction. There might be no sharp distinction at all, just a gradient that includes SOAP near the far end.

Send me and Sam email if you&#039;d like to continue this discussion and help us with the definitions.</description>
		<content:encoded><![CDATA[<p>I&#8217;m still digesting what you say about SOAP but I gotta disagree with those definitions of REST and HTTP+POX. (I don&#8217;t know whether you hold these opinions or are just reporting  what others say when you discuss the matter.) They&#8217;re fairly common definitions and are remarkably close to what I used to think,  so I think it&#8217;s worth taking them on.</p>
<p>Most of the web services you describe as REST are in fact REST, because a lot of public web services only let you fetch data. They use GET in a RESTful way because all their URIs are safe. But if a service lets you change the dataset it needs to use the other HTTP actions (PUT, DELETE, and POST, the latter of which still confuses me) for that. The best way to do this is to structure the URIs into resources, so that if you want to get the weblog entry at URI &#8220;/weblog/posts/100&#8243;, you send a GET request to that URI, and if you want to delete that entry you send a DELETE request to the same URI.</p>
<p>So the Amazon E-Commerce Service is almost entirely REST. It&#8217;s full of URI query-string options for searching and getting info from the Amazon product database,. Any query you can construct from the options describes a resource (a particular slice of the database) and GETting it gives you an XML depiction of that resource. But it also exposes some options called CartAdd, CartClear, etc. which store data in your shopping cart on the server side. This violates REST. </p>
<p>GET is for getting resources, and using it to make changes is dangerous. You may remember the flap that resulted when Google released a browser-side cache that followed links. It followed links like &#8220;/weblog/delete?id=100&#8243; and triggered actions the user hadn&#8217;t requested. &#8220;Cart&#8221; can be considered a resource that you can add, modify, delete, etc. but &#8220;CartAdd&#8221; is an operation. And in fact you&#8217;ll see people saying that AECS is not REST for this reason.</p>
<p>Near as I can tell HTTP+POX was invented by REST eggheads to shift off a bunch of services that didn&#8217;t meet the REST criteria, like the del.icio.us API, the Flickr API, the non-RESTful part of AWS, and so on. But since the term was coined by REST fanatics as a wall around REST, there&#8217;s no clear line of demarcation on the other side. </p>
<p>HTTP+POX services and SOAP services both have rules about what XML documents you can send under what circumstances. You could have a pathological service that was more idiosyncratic than SOAP in the XML it accepted. I&#8217;d say that would be worse than SOAP, and I wouldn&#8217;t want to call it HTTP+POX because then SOAP would be HTTP+POX too. That&#8217;s why I&#8217;m looking for another way to make the distinction. There might be no sharp distinction at all, just a gradient that includes SOAP near the far end.</p>
<p>Send me and Sam email if you&#8217;d like to continue this discussion and help us with the definitions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Keith Gaughan</title>
		<link>http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/comment-page-1/#comment-19833</link>
		<dc:creator>Keith Gaughan</dc:creator>
		<pubDate>Mon, 06 Nov 2006 09:36:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/#comment-19833</guid>
		<description>Ok, that first one definitely isn&#039;t REST: it&#039;s HTTP+POX. Anyway, REST uses the gamut of HTTP, not just GET and isn&#039;t just some HTTP based RPC mechanism (which the use of some parameter like &quot;action&quot;, &quot;do&quot; or so on would indicate). Whatever gave you that idea?</description>
		<content:encoded><![CDATA[<p>Ok, that first one definitely isn&#8217;t REST: it&#8217;s HTTP+POX. Anyway, REST uses the gamut of HTTP, not just GET and isn&#8217;t just some HTTP based RPC mechanism (which the use of some parameter like &#8220;action&#8221;, &#8220;do&#8221; or so on would indicate). Whatever gave you that idea?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
