NAME
    Dancer::Plugin::RPC::RESTISH - Simple plugin to implement a restish
    interface.

SYNOPSIS
    In the Controler-bit:

        use Dancer::Plugin::RPC::RESTISH;
        restish '/endpoint' => {
            publish   => 'pod',
            arguments => ['MyProject::Admin'],
        };

    and in the Model-bit (MyProject::Admin):

        package MyProject::Admin;

        =for restish GET@ability/:id rpc_get_ability_details

        =cut

        sub rpc_get_ability_details {
            my %args = @_; # contains: {"id": 42}
            return {
                # datastructure
            };
        }
        1;

DESCRIPTION
    RESTISH is an implementation of REST that lets you bind routes to code
    in the style the rest of Dancer::Plugin::RPC modules do.

    This version only supports JSON as data serialisation.

  restish '/base_path' => \%publisher_arguments
    See Dancer::Plugin::RPC, Dancer::Plugin::RPC::JSONRPC,
    Dancer::Plugin::RPC::RESTRPC, Dancer::Plugin::RPC::XMLRPC for more
    information about the %publisher_arguments.

  Implement the routes for REST
    The plugin registers Dancer-"any" route-handlers for the "base_path" +
    "method_path" and the route-handler looks for a data-handler that
    matches the path and HTTP-method.

    Method-paths can contain colon-prefixed parameters native to Dancer.
    These parameters will be merged with the content.

    Method-paths are prefixed by a HTTP-method followed by @:

    publisher => 'config'
        plugins:
            'RPC::RESTISH':
                '/rest': 'MyProject::Admin':
                    'GET@resources':       'get_all_resourses'
                    'POST@resource':       'create_resource'
                    'GET@resource/:id':    'get_resource'
                    'PATCH@resource/:id':  'update_resource'
                    'DELETE@resource/:id': 'delete_resource'

    publisher => 'pod'
            =for restish GET@resources       get_all_resources /rest
            =for restish POST@resource       create_resource   /rest
            =for restish GET@resource/:id    get_resource      /rest
            =for restish PATCH@resource/:id  update_resource   /rest
            =for restish DELETE@resource/:id delete_resource   /rest

        The third argument (the base_path) is optional.

INSTALLATION

    $ perl Makefile.PL
    $ make
    $ make test
    $ make install

LICENSE
    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

    See:

    *   <http://www.perl.com/perl/misc/Artistic.html>

    *   <http://www.gnu.org/copyleft/gpl.html>

    This program is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

COPYRIGHT
    (c) MMXIX - Abe Timmerman <abeltje@cpan.org>

