[http://creativecommons.org/licenses/by/3.0/]
This work is licensed under a CC
Attribution 3.0 Unported License [http://creativecommons.org/licenses/by/3.0/]
REST's level of abstraction and its simplicity as a small set of constraints can make it hard to get a grasp on how it can be applied for real-worl projects. This presentations introduces real-world REST by looking at how REST ce be used by reusing existing RESTful designs in terms of representations and interaction protocols; Atom and the Atom Publishing Protocol (AtomPub) are used as examples for existing RESTful designs. In addition, we take a brief look at how to go beyond using these canned REST
approaches, and how existing programming framework provide support for designing and implementing RESTful services.
collections of things
The Myth of RSS Compatibility [http://diveintomark.org/archives/2004/02/04/incompatible-rss]provides a good overview
why standards are a good thing
Semantic Webwave is not over yet, but RDF has lost its novelty appeal
parse and pray)
<description>This is a <em>very important</em> blog post …
<description>This is a <em>very important</em> blog post …
<description>This is a blog post about <em> in RSS feeds …
<description>This is a blog post about <em> in RSS feeds …
<description>This is a blog post about &lt;em> in RSS feeds …
new RSS
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-us"> <title>ongoing</title> <id>http://www.tbray.org/ongoing/</id> <link rel='self' href="http://www.tbray.org/ongoing/ongoing.atom"/> <updated>2007-04-11T12:55:09-07:00</updated> <author> <name>Tim Bray</name> </author> <subtitle>ongoing fragmented essay by Tim Bray</subtitle> <entry xml:base="When/200x/2007/04/02/"> <title>Atom Publishing Protocol Interop!</title> <id>http://www.tbray.org/ongoing/When/200x/2007/04/02/APP-Interop</id> <published>2007-04-02T13:00:00-07:00</published> <updated>2007-04-10T14:24:00-07:00</updated> <category scheme="http://www.tbray.org/ongoing/What/" term="Technology/Atom"/> <category scheme="http://www.tbray.org/ongoing/What/" term="Technology"/> <category scheme="http://www.tbray.org/ongoing/What/" term="Atom"/> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> <p>Mark your calendar: <a href="http://www.intertwingly.net/wiki/pie/April2007Interop">April 16-17 at Google</a>. <em>Everybody</em> is invited, provided they bring along an APP implementation, client or server. This was just announced a couple of days ago, and as I write this there are already <s>six</s> twelve client and <s>seven</s> fourteen server implementations signed up to be there and try to <a href="http://www.intertwingly.net/wiki/pie/InteropGrid">fill in the grid</a>. Let’s drop some names, in alphabetical order: AOL, Flock, Google, IBM, Lotus, Microsoft, Oracle, O’Reilly, Six Apart, Sun, WordPress. Um, have I mentioned that the APP is going to be huge?</p> </div> </content> </entry> </feed>
smartabout what the RSS author really wanted
<content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> One <strong>bold</strong> foot forward </div> </content>[http://www.xml.com/lpt/a/1633]
<content>The "atom:content" element either contains or links to the content of the entry. The content of atom:content is Language-Sensitive.</content>[http://www.xml.com/lpt/a/1633]
<content type="html">The <code>atom:content</code> element either contains or links to the content of the entry. The content of <code>atom:content</code> is <a href="http://www.ietf.org/rfc/rfc3066.txt">Language-Sensitive</a>.</content>[http://www.xml.com/lpt/a/1633]
<content type="image/png"> iVBORw0KGgoA … TAAAAAElFTkSuQmCC </content>[http://www.xml.com/lpt/a/1633]
<content src="image.png" type="image/png"/>[http://www.xml.com/lpt/a/1633]
<link rel="alternate" type="application/rdf+xml" title="…" href="…" /> <link rel="alternate" type="application/rss+xml" title="…" href="…" />
<link rel="alternate" type="application/atom+xml" title="…" href="…" />
CUDout of the
CRUDset of operations
Resource | HTTP Method | Representation | Description |
---|---|---|---|
Introspection | GET | Atom Service Document [Service Documents (1)] | Enumerates a set of collections and lists their URIs and other information about the collections |
Collection | GET | Atom Feed | A list of member of the collection (this may be a subset of all entries in the collection) |
Collection | POST | Atom Entry | Create a new entry in the collection |
Member | GET | Atom Entry | Get the Atom Entry |
Member | PUT | Atom Entry | Update the Atom Entry |
Member | DELETE | n/a | Delete the Atom Entry from the collection |
Service Documents represent server-defined groups of Collections, and are used to initialize the process of creating and editing resources.
realtop-level construct of AtomPub is the workspace
<service xmlns="http://purl.org/atom/app#" xmlns:atom="http://www.w3.org/2005/Atom"> <workspace> <atom:title>Main Site</atom:title> <collection href="http://example.org/reilly/main"> <atom:title>My Blog Entries</atom:title> <categories href="http://example.com/cats/forMain.cats"/> </collection> <collection href="http://example.org/reilly/pic"> <atom:title>Pictures</atom:title> <accept>image/*</accept> </collection> </workspace> <workspace> <atom:title>Side Bar Blog</atom:title> <collection href="http://example.org/reilly/list"> <atom:title>Remaindered Links</atom:title> <accept>entry</accept> <categories fixed="yes"> <atom:category scheme="http://example.org/extra-cats/" term="joke"/> <atom:category scheme="http://example.org/extra-cats/" term="serious"/> </categories> </collection> </workspace> </service>
<app:categories xmlns:app="http://purl.org/atom/app#" xmlns="http://www.w3.org/2005/Atom" fixed="yes" scheme="http://example.com/cats/big3"> <category term="animal"/> <category term="vegetable"/> <category term="mineral"/> </app:categories>