Hi there, This is a frequently recurring conversation - so I created a wiki page to gather all the points where we reached some consensus: http://catwiki.toeat.com/crud. For the start I just dumped my opinions. I tried to be not controversial - but it is a wiki - if you don't agree then you can edit it and make it more acceptable for you.
I am especially waiting for people with opinions on the REST and browser REST part - I have got much knowledge in that area. Cheers, Zbigniew On Sun, May 4, 2008 at 2:38 AM, luke saunders <[EMAIL PROTECTED]> wrote: > I have started to write a Catalyst base controller for REST style CRUD > via DBIC. I have noticed that a number of other people have been > working on or are thinking about working on something similar, most > notabley J. Shirley who seems to be creating > Catalyst::Controller::REST::DBIC::Item > (http://dev.catalystframework.org/svnweb/Catalyst/browse/Catalyst-Controller-REST-DBIC-Item/) > and some chaps from a recent thread on this list (entitled > "Dispatching with Chained vs HTTP method"). > > Ideally I would like to merge J. Shirley's effort into mine (or visa > versa) along with anything that anyone else has. Basically I want to > avoid ending up with a load of modules that all do the same thing. > > My effort is heavily based on something mst wrote a while ago, and > since then I've ended up writing something very similar for every > project I've worked on which indicates it's worth OSing. Essentially > it is used like so: > > package MyApp::Controller::API::REST::CD; > > use base qw/Catalyst::Controller::REST::DBIC/; > > ... > > __PACKAGE__->config > ( action => { setup => { PathPart => 'cd', Chained => > '/api/rest/rest_base' } }, > class => 'RestTestDB::CD', > create_requires => ['artist', 'title', 'year' ], > update_allows => ['title', 'year'] > ); > > 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] > > The full source is here: > http://lukesaunders.me.uk/dists/Catalyst-Controller-REST-DBIC-1.000000.tar.gz > > If you have a few moments please have a look, especially if you are > working on something similar. Today I even wrote a test suite which > has a test app and is probably the best place to look to see what it > does. > > Note that it lacks: > - list and view type methods which dump objects to JSON (or whatever) > - clever validation - it should validate based on the DBIC column > definitions but it doesn't > - any auth - not sure if it should or not, but it's possible > > Also it doesn't distinguish between POST, PUT, DELETE and GET HTTP > requests favouring instead entirely separate endpoints, but that's up > for discussion. > > So, J. Shirley, do you have any interest in a merge? And others, do > you have ideas and would you like to contribute? > > Thanks, > Luke. > > _______________________________________________ > List: Catalyst@lists.scsys.co.uk > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst > Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ > Dev site: http://dev.catalyst.perl.org/ > -- Zbigniew Lukasiak http://brudnopis.blogspot.com/ _______________________________________________ List: Catalyst@lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ Dev site: http://dev.catalyst.perl.org/