[Catalyst] RFC: Catalyst::Controller::REST::DBIC

J. Shirley jshirley at gmail.com
Sun May 4 06:05:51 BST 2008


On Sat, May 3, 2008 at 9:29 PM, Patrick Donelan <pat at patspam.com> wrote:
>
> > And this gets you the following endpoints to fire requests at:
> >    /api/rest/cd/create
> >    /api/rest/cd/id/[cdid]/update
> >    /api/rest/cd/id/[cdid]/delete
> >    /api/rest/cd/id/[cdid]/add_to_rel/[relation]
> >    /api/rest/cd/id/[cdid]/remove_from_rel/[relation]
>
> Those URLs don't strike me as very RESTful.
>
> Patrick
>

That is my first impression.  My work is an enhancement from
Catalyst::Action::REST, which is a great module already out on CPAN
and used by other people (holoway++).

I'm all for collaboration, but my work is mostly tied to have exposed
webservices (in addition to a web-browser compatibility layer) via
REST.  By that I mean that I expect, and require, that I can do a PUT
/api/rest/cd/[cdid], DELETE /api/rest/cd/[CDID]

On a side note about REST - REST doesn't mean human readable URLs.  It
means representative URLs.  The bit about cd/id/{CDID}/ smells like
named parameters going into positional parameters.  What is the real
difference between cd?id={CDID}&action=delete, aside from different
characters?  Where as with REST, /cd/{id} is a unique identifier for
that object and hence a full representation.

I understand the limitations of /cd/id/{id} vs. /cd/name/{id}, but a
lookup and redirection service is a better solution that polluting
your absolute unique representative URL spaces.

You can catch me on IRC next week, as I'm actively working on this for
$work and it's getting real dev time (finally).  My work is
functionally complete, but lacking test cases; it is just a refactor
of existing code in production.

-J



More information about the Catalyst mailing list