[uf-rest] Instance/Collection URL conventions

Dr. Ernie Prabhakar drernie at opendarwin.org
Tue Nov 15 08:24:16 PST 2005


Hi David,
On Nov 10, 2005, at 6:14 AM, David Heinemeier Hansson wrote:
> One problem with the scheme defined by Donald. It doesn't separate  
> viewing an entity and editing it. So for now, I have edit still  
> happening at person/1/edit, person/1 is showing, and person is the  
> new form. Any thoughts on how to make the show/edit split happen  
> more gracefully?
>
> Also, it makes more sense to have the edit state be the postback  
> than the show stage. Such that its the edit action that shares both  
> showing the form and updating, not the show action.

I agree.   I've been wrestling with this question for a while, and my  
suspicion is that there is a general problem of REST assuming there  
is only a *single* server-side representation of a resource, e.g.:

	http://host/base/person/1

This is tolerable in an XMLish world where you don't care about human  
readability and discovery, but not for browser-loving RESTifarians  
like us. :-)

I believe that the "right" solution in an XHTML-ish ("REX") world is  
to explicitly allow URL suffixes for alternate representations.   
Something like:

;http://host/base/person/1/@table  :return entity as a <table> row  
(XOXT)
   <tr><th scope="col"><abbr title="fn">Full (Formatted) Name</abbr></ 
td>...</tr>
   <tr id="person.1"><td class="fn">Ernie Prabhakar</td>...</tr>

;http://host/base/person/1/@ol  :return entity as an indexed list (XOXO)
   <ol id="person.1" class="xoxo">
    <li class="fn">Ernie Prabhakar</li>
    ...
   </ol>

;http://host/base/person/1/@dl  :return entity as a keyed dictionary  
(XOXO)
   <dl id="person.1" class="xoxo" >
    <dt><abbr title="fn">Full Name:</abbr></dt><dd class="fn">Ernie  
Prabhakar</dd>
    ...
   </dl>

;http://host/base/person/1/@form  :return entity as a POSTable form
   <dl id="person.1" class="xoxo" >
    <dt><label for="person.1.fn"><abbr title="fn">Full (Formatted)  
Name</abbr></label></dt>
     <dd><input class="fn" type="text" id="person.1.fn" value="Ernie  
Prabhakar"/></dd>
    ...
   </dl>

With presumably one of these as the default (no suffix) representation.
The idea is to:
* extend REST to allow multiple server-side representations
* focus on structure ("form") not actions ("edit")
* make it easy to incorporate partials via AHAH with appropriate  
structure
* avoid the need to tweak data templates; use CSS to format the  
result instead

At least, that's my theory. Thoughts?

http://microformats.org/wiki/rest/rails#URL_Suffix_Proposal

-- Ernie P.





------------
Ernest N. Prabhakar, Ph.D. <drernie at opendarwin.org>
Ex-Physicist, Marketing Weenie, and Dilettante Hacker
Probe-Hacker blog: http://www.opendarwin.org/~drernie/




More information about the microformats-rest mailing list