[Dancer-users] a REST question immediately followed by a Dancer-implementation question

Daniel Perrett dperrett at cambridge.org
Fri Sep 30 18:21:39 CEST 2011


You want code which will infer what your code is requiring? Sounds tricky, 
and I doubt you want to run some sort of meta-parser every time someone 
visits '/rest'.

Wouldn't it be easier to write the "resources" data structure (as you have 
below), maybe as a config file, so you know what your application's 
interface is, and use that to a) generate responses to /rest, b) maybe 
generate some documentation, (especially if you include that in the data 
structure), and c) validate your parameters in the methods, e.g. creating 
a hash(ref) guaranteed to contain all those and only those parameters 
specified in the config (and using that hash(ref) thereafter instead of 
Damcer's parameter function), and then you can guarantee your code 
complies with the specification.

Daniel



From:   "Mr. Puneet Kishor" <punk.kish at gmail.com>
To:     dancer-users <dancer-users at perldancer.org>
Date:   30/09/2011 14:51
Subject:        [Dancer-users] a REST question immediately followed by a 
Dancer-implementation question
Sent by:        dancer-users-bounces at perldancer.org



So, I have a lot of methods such as 
                 get '/foo' => { .. };
                 get '/bar' => { .. };
                 get '/baz' => { .. };
                 get '/qux' => { .. };

All the above methods are reachable via a browser in which they depict 
some visual representation of the data.

Most of the above methods have their '.:format' counterparts, mostly 
returning JSON packets when reached either via the browser or via the 
command line.

All the methods above return something by default or modified by 
parameters. So, "http://server/app/foo" may work, or may require some 
parameters as in "
http://server/app/foo?age=27&before=yesterday&for=rascals"

I would like to implement a "meta" method, say

                 get '/rest' => { .. };

which should return a listing of all the methods above, along with their 
parameters, if any, and whether those parameters are optional or required.

                 http://server/app/rest
                 {"resources": [
                                 {"name": "foo, "params": [
                                                 {"required": [
                                                                 {"name": 
"age", "type": "int"}
                                                 ]},
                                                 {"optional": [
                                                                 {"name": 
"before", "type": "string"}
                                                                 {"name": 
"for", "type": "string"}
                                                 ]},
                                 ]}
                 ]}

In other words, this meta method returns all the resources available at 
the http://server/app.

Of course, I could code this for each app, but it would be nice to 
automate it.

Suggestions? Ideas?


--
Puneet Kishor 
_______________________________________________
Dancer-users mailing list
Dancer-users at perldancer.org
http://www.backup-manager.org/cgi-bin/listinfo/dancer-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.backup-manager.org/pipermail/dancer-users/attachments/20110930/2b5b16fd/attachment-0001.htm>


More information about the Dancer-users mailing list