[uf-rest] RESTifying RAILs
Dr. Ernie Prabhakar
drernie at opendarwin.org
Fri Nov 4 10:03:20 PST 2005
On Nov 3, 2005, at 11:50 PM, Dan Kubb wrote:
> I've been thinking about how to RESTify Rails for the
> last week, and have been RESTifying other MVC systems
> for several months, so I've got a few points to add.
Wow, great stuff. I've added your new items to the Wiki:
I just hope we don't freak out David with too many ideas. :-) I
appreciate your willingness to actually prototype this in code, so
(assuming David agrees) the implementation should be relatively
My only concern is with your mechanism for handling other methods:
> GET /person/ -> Person.get_index
> GET /person/123 -> Person.get_index
> GET /person/123/friend -> Person.get_friend
> HEAD /person/ -> Person.get_index # HEAD handled
> by get method
> POST /person/ -> Person.post_index
> PUT /person/123 -> Person.put_index
> POST /person/123/friend -> Person.post_friend
> DELETE /person/123 -> Person.delete_index
> DELETE /person/123/friend -> Person.delete_friend
That seems a bit verbose, not to mention non-backward-compatible.
I'd prefer something like:
> GET /person/123 -> Person.index
> POST /person/123 -> Person.index_POST
That is, the default is GET as usual, but one can suffix a method to
indicate a special response. I also think using ALL CAPS is better
to a) avoid collision with normal URIs and b) signal clearly that
this is special. Though, is CAPS in a method name bad Ruby hygiene?
Also, one question:
> One other thing this Controller is doing is that it
> allows tunneling of PUT, DELETE (and any other method) over
> top of a POST. Before dispatch I look for a specific
> parameter that says what method I really want to call
> and dispatch to it.
Yeah, we're still wrestling with that issue.
> While this isn't RESTful, its a trade-off that will allow
> the web apps to work with all browsers until support
> for more than GET and POST is common.
Actually, there might be another way -- automatically insert the
If we're controlling the generated HTML anyway, why not solve it on
the client-side? This is a browser limitation, so better to fix it
there; and if from the designer's point of view it is zero-cost why
not pretend to do the right thing?
> Hey I've got to tunnel update and delete operations over POST
Well, Dimitri might disagree. :-)
> anyway, so I figure I'll use a convention to do it.
So, what convention to you use, exactly? Explicitly specifying a
-- 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/
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the microformats-rest