[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