Catalyst-Controller-DBIC-API

 view release on metacpan or  search on metacpan

lib/Catalyst/Controller/DBIC/API/REST.pm  view on Meta::CPAN

package Catalyst::Controller::DBIC::API::REST;
$Catalyst::Controller::DBIC::API::REST::VERSION = '2.009000';
#ABSTRACT: Provides a REST interface to DBIx::Class
use Moose;
BEGIN { extends 'Catalyst::Controller::DBIC::API'; }

__PACKAGE__->config(
    'default'   => 'application/json',
    'stash_key' => 'response',
    'map'       => {
        'application/x-www-form-urlencoded' => 'JSON',
        'application/json'                  => 'JSON',
    }
);


sub update_or_create_objects : POST PUT Chained('objects_no_id') PathPart('')
    Args(0) {
    my ( $self, $c ) = @_;
    $self->update_or_create($c);
}


sub delete_many_objects : DELETE Chained('objects_no_id') PathPart('')
    Args(0) {
    my ( $self, $c ) = @_;
    $self->delete($c);
}


sub list_objects : GET Chained('objects_no_id') PathPart('') Args(0) {
    my ( $self, $c ) = @_;
    $self->list($c);
}


sub update_or_create_one_object : POST PUT Chained('object_with_id')
    PathPart('') Args(0) {
    my ( $self, $c ) = @_;
    $self->update_or_create($c);
}


sub delete_one_object : DELETE Chained('object_with_id') PathPart('') Args(0)
{
    my ( $self, $c ) = @_;
    $self->delete($c);
}


sub list_one_object : GET Chained('object_with_id') PathPart('') Args(0) {
    my ( $self, $c ) = @_;
    $self->item($c);
}

1;

__END__

=pod

=head1 NAME

Catalyst::Controller::DBIC::API::REST - Provides a REST interface to DBIx::Class

=head1 VERSION

version 2.009000

=head1 DESCRIPTION

Provides a REST style API interface to the functionality described in
L<Catalyst::Controller::DBIC::API>.

By default provides the following endpoints:

  $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.

=head1 PROTECTED_METHODS

=head2 setup

Chained: override
PathPart: override
CaptureArgs: 0

As described in L<Catalyst::Controller::DBIC::API/setup>, this action is the
chain root of the controller but has no pathpart or chain parent defined by
default.

These must be defined in order for the controller to function.



( run in 1.065 second using v1.01-cache-2.11-cpan-ceb78f64989 )