<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Aaron Feng: Tag REST</title>
    <link>http://www.aaronfeng.com/articles/tag/rest?tag=rest</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Adventures in software development</description>
    <item>
      <title>Amazon S3</title>
      <description>&lt;p&gt;Since &lt;a href="http://shoechicken.com"&gt;Shoechicken&lt;/a&gt; will provide RESTful web services, it is only natural to check out some existing web services that are already in the wild.  One of the most well known web services that provides a REST API is the &lt;a href="http://www.amazon.com/gp/browse.html?node=16427261"&gt;Amazon Simple Storage Service (Amazon S3)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.amazon.com/gp/browse.html?node=16427261"&gt;S3&lt;/a&gt; provides web services that allow a subscriber to store and retrieve data.  The subscriber is charged based on bandwidth and storage used.  It is especially important for Amazon to validate your identity so you do not get falsely charged from unauthorized requests.  Most important of all, you do not want your data to be compromised.  &lt;/p&gt;

&lt;p&gt;How does &lt;a href="http://www.amazon.com/gp/browse.html?node=16427261"&gt;S3&lt;/a&gt; validate your identity?  When you sign up for &lt;a href="http://www.amazon.com/gp/browse.html?node=16427261"&gt;S3&lt;/a&gt; you will receive two keys: Access Key ID and Secret Access Key ID.  Access Key ID is included in every request and before you put your request on the wire, you sign the header with your Secret Access Key ID.  Of course, no one knows your Secret Access Key besides you and Amazon.  This is fairly interesting because you can allow access to others by constructing the request for them.&lt;/p&gt;

&lt;p&gt;Maybe we can do something similar to &lt;a href="http://www.amazon.com/gp/browse.html?node=16427261"&gt;S3&lt;/a&gt; in &lt;a href="http://shoechicken.com"&gt;Shoechicken&lt;/a&gt; when the user wants to retrieve recommendations for his or her feeds.&lt;/p&gt;

&lt;p&gt;For more information about &lt;a href="http://www.amazon.com/gp/browse.html?node=16427261"&gt;S3&lt;/a&gt; please refer to the &lt;a href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/"&gt;official documentation&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Wed, 07 Mar 2007 21:23:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:60f3996c-e44c-4d13-9eda-697d87d4e021</guid>
      <author>Aaron Feng</author>
      <link>http://www.aaronfeng.com/articles/2007/03/07/amazon-s3</link>
      <category>REST</category>
      <category>REST</category>
      <category>Amazon</category>
      <category>Authentication</category>
    </item>
    <item>
      <title>Should Shoechicken be soapy or restful?</title>
      <description>&lt;p&gt;Even though &lt;a href="http://shoechicken.com"&gt;Shoechicken&lt;/a&gt; is a &lt;a href="http://www.rubyonrails.org/"&gt;Rails&lt;/a&gt; application, currently it has no plans for any user interface.  It will only expose web services for external clients to consume.  In the web services world, you have two camps: &lt;a href="http://en.wikipedia.org/wiki/SOAP"&gt;SOAP&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;Representational State Transfer&lt;/a&gt;.  With that said, we had to make a decision as to which style of web services we will provide: &lt;a href="http://en.wikipedia.org/wiki/SOAP"&gt;SOAP&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;REST&lt;/a&gt; or both.&lt;/p&gt;

&lt;p&gt;One big advantage of using &lt;a href="http://en.wikipedia.org/wiki/SOAP"&gt;SOAP&lt;/a&gt; is the code generation tools that are available in various languages.  It works extremely well when you control both sides.  However, it can get a little more hairy when you do not have the luxury of a homogenous environment. &lt;/p&gt;

&lt;p&gt;On the other hand, &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;REST&lt;/a&gt; is very simple.  It just uses the old, trusty standard HTTP to transport requests without wrapping it.  All the client need to consume a service is a way to send HTTP requests and parse XML.&lt;/p&gt;

&lt;p&gt;We want to keep &lt;a href="http://shoechicken.com"&gt;Shoechicken&lt;/a&gt; as simple as possible.  I feel &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;REST&lt;/a&gt; style of web services will be easier to implement and easier for clients to consume with fewer interoperability issues.&lt;/p&gt;

&lt;p&gt;During the day I work on a distributed financial system that provides &lt;a href="http://en.wikipedia.org/wiki/SOAP"&gt;SOAP&lt;/a&gt; style web services.  It would be fun to learn what is on the other side of the fence.  That is one of the main reasons I went with &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;REST&lt;/a&gt; for &lt;a href="http://shoechicken.com"&gt;Shoechicken&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Tue, 06 Mar 2007 22:28:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:a2b42850-4af5-4c68-a8b3-c930c08f1549</guid>
      <author>Aaron Feng</author>
      <link>http://www.aaronfeng.com/articles/2007/03/06/should-shoechicken-be-soapy-or-restful</link>
      <category>shoechicken</category>
      <category>REST</category>
      <category>SOAP</category>
    </item>
  </channel>
</rss>
