/
controllers.pl6
39 lines (33 loc) · 997 Bytes
/
controllers.pl6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use v6.c;
use Bailador;
## EXAMPLE 1 - with class
class My::Controller::Whatever {
method show-whatever($id) {
"whoop whoop $id";
}
}
get '/whatever/:id' => { class => My::Controller::Whatever, to => 'show-whatever' };
## EXAMPLE 2 - with controller that is a 'persistant between call
class My::Controller::Hash {
has %.data is required;
method get($id) {
"data for $id is " ~ ($.data{$id} // '');
}
method delete($id) {
%.data{$id}:delete;
"$id is deleted";
}
method post($id, $data) {
%.data{$id} = $data.Str;
"$data is stored at $id";
}
method list {
%.data.perl;
}
}
my $controller = My::Controller::Hash.new(data => {foo => 1, bar => 2});
get '/data/:id' => { :$controller, to => 'get'};
delete '/data/:id' => { :$controller, to => 'delete'};
post '/data/:id/:data' => { :$controller, to => 'post'};
get '/data' => { :$controller, to => 'list'};
baile();