By default provides the following endpoints:
- $base (accepts PUT and GET)
- $base/[identifier] (accepts POST and DELETE)
+ $base (operates on lists of objects and accepts GET, PUT, POST and DELETE)
+ $base/[identifier] (operates on a single object and accepts GET, PUT, POST and DELETE)
Where $base is the URI described by L</setup>, the chain root of the controller, and the request type will determine the L<Catalyst::Controller::DBIC::API> method to forward.
...
);
-=method_protected base
+=method_protected no_id
-Chained: L</setup>
+Chained: L</objects_no_id>
PathPart: none
CaptureArgs: 0
Forwards to list level methods described in L<Catalyst::Controller::DBIC::API> as follows:
-DELETE: forwards to L<Catalyst::Controller::DBIC::API/object> then L<Catalyst::Controller::DBIC::API/delete>
-POST/PUT: forwards to L<Catalyst::Controller::DBIC::API/object> then L<Catalyst::Controller::DBIC::API/update_or_create>
+DELETE: L<Catalyst::Controller::DBIC::API/delete>
+POST/PUT: L<Catalyst::Controller::DBIC::API/update_or_create>
GET: forwards to L<Catalyst::Controller::DBIC::API/list>
=cut
-sub base : Chained('setup') PathPart('') ActionClass('REST') Args {}
+sub no_id : Chained('objects_no_id') PathPart('') ActionClass('REST') {}
-sub base_PUT {
+sub no_id_PUT
+{
my ( $self, $c ) = @_;
-
- $c->forward('object');
- return if $self->get_errors($c);
$c->forward('update_or_create');
}
-sub base_POST {
+sub no_id_POST
+{
my ( $self, $c ) = @_;
-
- $c->forward('object');
- return if $self->get_errors($c);
$c->forward('update_or_create');
}
-sub base_DELETE {
+sub no_id_DELETE
+{
my ( $self, $c ) = @_;
- $c->forward('object');
- return if $self->get_errors($c);
$c->forward('delete');
}
-sub base_GET {
+sub no_id_GET
+{
my ( $self, $c ) = @_;
-
$c->forward('list');
}
+=method_protected with_id
+
+Chained: L</object_with_id>
+PathPart: none
+CaptureArgs: 0
+
+Forwards to list level methods described in L<Catalyst::Controller::DBIC::API> as follows:
+
+DELETE: L<Catalyst::Controller::DBIC::API/delete>
+POST/PUT: L<Catalyst::Controller::DBIC::API/update_or_create>
+GET: forwards to L<Catalyst::Controller::DBIC::API/item>
+
+=cut
+
+sub with_id :Chained('object_with_id') :PathPart('') :ActionClass('REST') {}
+
+sub with_id_PUT
+{
+ my ( $self, $c ) = @_;
+ $c->forward('update_or_create');
+}
+
+sub with_id_POST
+{
+ my ( $self, $c ) = @_;
+ $c->forward('update_or_create');
+}
+
+sub with_id_DELETE
+{
+ my ( $self, $c ) = @_;
+ $c->forward('delete');
+}
+
+sub with_id_GET
+{
+ my ( $self, $c ) = @_;
+ $c->forward('item');
+}
+
1;