NAME

Web::API::Mapper - Web API Mapping Class

SYNOPSIS

my $m = Web::API::Mapper->new(  '/foo' => {
                post => [
                    '/bar/(\d+)' => sub { my $args = shift;  return $1;  }
                ]
                get =>  [ 
                    ....
                ]
            })->mount( ... );
my $ret = $m->post->dispatch( '/foo/bar' , { ... args ... } );
my $ret = $m->get->dispatch(  '/foo/bar' );
my $ret = $m->dispatch( '/foo/bar' , { args ... } );

$m->post->mount( '/foo' , [ '/subpath/to' => sub {  ....  } ]);
$m->mount( '/fb' => {  post => [  ... ] , get => [  ... ] }  )->mount( ... );

TODO

Provide classes for mounting service to frameworks.

DESCRIPTION

Web::API::Mapper is an API (Application Programming Interface) convergence class for mapping/dispatching API to web frameworks.

by using Web::API::Mapper you can simply mount these api service like Twitter, and dispatch paths to these services.

Web::API::Mapper is using Path::Dispatcher for dispatching.

ROUTE SPEC

API Provider can provide a route hash reference for dispatching rules.

post => [ '/path/to/(\d+)' => sub { } , ... ]
get => [ '/path/to/(\d+)' => sub { } , ... ]
fallback => sub { }

ACCESSORS

route

post

is a Web::API::Mapper::RuleSet object.

get

is a Web::API::Mapper::RuleSet object.

fallback

is a CodeRef, fallback handler.

FUNCTIONS

mount

dispatch

EXAMPLE

package Twitter::API;

sub route { {
    post => [
        '/timeline/add/' => sub { my $args = shift;  .... },
    ],
    get => [
        '/timeline/get/(\w+)' => sub {  my $args = shift;  .... return $1 },
    ],
} }

package main;

# This will add rule path to /twitter/timeline/add/  ... etc
my $m = Web::API::Mapper->new( '/twitter' => Twitter::API->route );
$m->mount(  '/basepath' , {  post => [  ... ] } );
$m->post->mount( '/basepath' , [  ...  ]  );
$m->dispatch( '/path/to' , { args ... } );

1;

AUTHOR

Cornelius E< cornelius.howl at gmail.com >

2 POD Errors

The following errors were encountered while parsing the POD:

Around line 108:

'=item' outside of any '=over'

Around line 163:

Unknown E content in E< cornelius.howl at gmail.com >