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 >