The RESTLog interface is defined in Table 1. The table lists the URLs, the verbs that can act on those locations, the mime-type of the content and a description of the results of that action.
N.B. The URL
RESTLog.cgi is used as a placeholder for
the implementations real URL. For example, the real URL could easily be
The RESTLog interface does not define what the URL is, instead it defines
the actions that are allowed on that URL and the format of the responses. For example,
I can hand you a URL such as
http://bitworking.org/stories and tell you that it conforms
to the RESTLog interface and you can perform, modulo security restrictions, all of
the actions listed below on that URL.
|RESTLog.cgi||GET||html||Retrieves the main web page.|
|rss||Retrieves the RSS file.|
|POST||xml||Creates a new news item.||RSS Fragment|
|RESTLog.cgi/itemID||GET||html||Retrieves the item transformed into an HTML page.|
|xml||Retrieves the xml form of the item, i.e. as an RSS 2.0 'item' fragment.||RSS Fragment|
|PUT||xml||Putting an item replaces it's contents. This is how editing an item is done.||RSS Fragment|
|DELETE||-||Delete the item.|
All the actions that deal with content type 'xml' are transporting items. Items are formatted as 'item' elements from RSS 2.0. The items must additionally conform to the RSS 2.0/XSS-extensible profile with the exception of defining the default namespace. For example:
<item xmlns:dc="http://purl.org/dc/elements/1.1/"> <title>My Summer Vacation</title> <description>On my summer vacation I went to...</description> <link>http://127.0.0.1/cgi-bin/RESTLog.py/4</link> <dc:date>2002-10-28T22:18:53-05:00</dc:date> </item>
This example shows only a minimal number of elements. An implementation must no reject modules it doesn't know about, though it is free to ignore them.
Further note that the contents of the 'item' element are guided by the RSS 2.0 specification, which states that all elements are optional, but requires that at least one of 'title' or 'description' are present.
To create a new item on the weblog the publishing client would format the
new item as an 'item' element of RSS 2.0
and POST that to the URL
RESTLog.cgi. GET, PUT and DELETE
on the URL
RESTLog.cgi/itemID are used to
manipulate an individual item. The client software can do a GET to
retrieve the most recent version of the XML for the item to be displayed
for editing by the user. After the user had edited the item it can be
PUT back and the items content will be replaced with the PUT copy.
Removing an item completely can be done by doing a DELETE on the
Currently most (none?) of the news aggregators don't do content negotiation, so
you will need to feed them the URL
/RESTLog.cgi?rss which they
can use to get the RSS feed.