{"id":771,"date":"2005-04-14T15:14:00","date_gmt":"2005-04-14T19:14:00","guid":{"rendered":"http:\/\/www.markbaker.ca\/wp\/2005\/04\/14\/accidentally-restful\/"},"modified":"2005-04-14T15:14:00","modified_gmt":"2005-04-14T19:14:00","slug":"accidentally-restful","status":"publish","type":"post","link":"http:\/\/www.markbaker.ca\/blog\/2005\/04\/accidentally-restful\/","title":{"rendered":"Accidentally RESTful"},"content":{"rendered":"<p>I&#8217;ve talked about both the\n<a href=\"http:\/\/www.intertwingly.net\/blog\/2005\/02\/27\/Last-Battlefield#c1109564048\">pluses and minuses<\/a>\nof\n<a href=\"http:\/\/www.amazon.com\">Amazon<\/a>&#8216;s\n<a href=\"http:\/\/www.amazon.com\/webservices\">approach to Web Services<\/a>\nfor some time now.  Recently, I&#8217;ve heard that they&#8217;re in the process of\ngreatly expanding those services, which is great.  But I think that before\nthey go too far with that, they should really dig a little deeper to learn\nwhy it is exactly that their &#8220;RESTful&#8221; data retrieval services are getting the\n<a href=\"http:\/\/www.oreillynet.com\/pub\/wlg\/3005\">uptake<\/a>\nthey are.<\/p>\n\n<p>I don&#8217;t think it&#8217;s controversial to claim that Amazon see the REST vs Web\nservices debate as primarily about\n<a href=\"http:\/\/www.awszone.com\/scratchpads\/aws\/ecs.us\/ItemSearch.aws\">encodings<\/a>;\neither a message is encoded as a SOAP envelope, or it&#8217;s encoded as a URI, but in\nboth cases the abstract message &#8211; the information being conveyed &#8211; is identical.\nI completely disagree, of course, and believe that there&#8217;s a very large\narchitectural difference between those two approaches; that in http URI form,\nthe URI isn&#8217;t the message, and instead, the surrounding HTTP message which\nencapsulates that URI becomes the real message, while the URI itself is treated\nas an opaque bag-o-bits.  Through this encapsulation, GET becomes the operation.<\/p>\n\n<p>What I just described I refer to as &#8220;accidentally RESTful&#8221;, and it&#8217;s\n<a href=\"http:\/\/www.flickr.com\/services\/api\/\">sur<\/a>&#8211;\n<a href=\"http:\/\/www.syndic8.com\/web_services\/\">prisingly<\/a>\n<a href=\"http:\/\/rifers.org\/wiki\/display\/BLA\/REST+API\">common<\/a>.\nAnd while, for the simple data retrieval case, it <em>is<\/em> RESTful,\nand a significant improvement over vanilla SOA, you&#8217;ll find that as you\nadd support for state-changing actions and just generally evolve that\napplication over time, you&#8217;re going to run into many of the same problems\nyou&#8217;d run into doing SOA.<\/p>\n\n<p>Fair warning!<\/p>\n\n<p><em>Update<\/em>; oh, I suppose this is, in part, a response to\n<a href=\"http:\/\/www.25hoursaday.com\/weblog\/PermaLink.aspx?guid=7a2f3df2-83f7-471b-bbe6-2d8462060263\">something Dare said<\/a>\na couple of weeks back; those APIs he lists\n<em>ARE<\/em> RESTful, at least with respect to using the uniform interface.<\/p>","protected":false},"excerpt":{"rendered":"I&#8217;ve talked about both the pluses and minuses of Amazon&#8216;s approach to Web Services for some time now. Recently, I&#8217;ve heard that they&#8217;re in the process of greatly expanding those services, which is great. But I think that before they go too far with that, they should really dig a little deeper to learn why [&hellip;]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[22,26],"class_list":["post-771","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-rest","tag-soap"],"_links":{"self":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/771","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/comments?post=771"}],"version-history":[{"count":0,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/posts\/771\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/media?parent=771"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/categories?post=771"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.markbaker.ca\/blog\/wp-json\/wp\/v2\/tags?post=771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}