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


Catalyst-Controller-DBIC-API documentation Contained in the Catalyst-Controller-DBIC-API distribution.

Index


Code Index:

NAME

Top

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

VERSION

Top

version 2.003002

DESCRIPTION

Top

Provides a REST style API interface to the functionality described in 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 setup, the chain root of the controller, and the request type will determine the Catalyst::Controller::DBIC::API method to forward.

PROTECTED_METHODS

Top

setup

Chained: override PathPart: override CaptureArgs: 0

As described in setup in Catalyst::Controller::DBIC::API, this action is the chain root of the controller but has no pathpart or chain parent defined by default, so these must be defined in order for the controller to function. The neatest way is normally to define these using the controller's config.

  __PACKAGE__->config
    ( action => { setup => { PathPart => 'track', Chained => '/api/rest/rest_base' } },
	...
  );

update_or_create_objects

Chained: objects_no_id PathPart: none Args: 0 Method: POST/PUT

Calls update_or_create in Catalyst::Controller::DBIC::API.

delete_many_objects

Chained: objects_no_id PathPart: none Args: 0 Method: DELETE

Calls delete in Catalyst::Controller::DBIC::API.

list_objects

Chained: objects_no_id PathPart: none Args: 0 Method: GET

Calls list in Catalyst::Controller::DBIC::API.

update_or_create_one_object

Chained: object_with_id PathPart: none Args: 0 Method: POST/PUT

Calls update_or_create in Catalyst::Controller::DBIC::API.

delete_one_object

Chained: object_with_id PathPart: none Args: 0 Method: DELETE

Calls delete in Catalyst::Controller::DBIC::API.

list_one_object

Chained: object_with_id PathPart: none Args: 0 Method: GET

Calls item in Catalyst::Controller::DBIC::API.

AUTHORS

Top

COPYRIGHT AND LICENSE

Top


Catalyst-Controller-DBIC-API documentation Contained in the Catalyst-Controller-DBIC-API distribution.

package Catalyst::Controller::DBIC::API::REST;
BEGIN {
  $Catalyst::Controller::DBIC::API::REST::VERSION = '2.003002';
}

#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 : Chained('objects_no_id') PathPart('') Does('MatchRequestMethod') Method('POST') Method('PUT') Args(0)
{
	my ( $self, $c ) = @_;
    $self->update_or_create($c);
}


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


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


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


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


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

1;

__END__