Router::Boom::Method - Router::Boom with HTTP method support
Router::Boom doesn't care the routing with HTTP method. It's simple and good. But it makes hard to implement the rule like this:
get '/' => sub { 'get ok' }; post '/' => sub { 'post ok' };
Then, this class helps you.
my $router = Router::Boom::Method->new()
Create new instance.
$router->add($http_method:Str|ArrayRef[Str], $path:Str, $opaque:Any)
Add new path to the router.
$http_method is a string to represent HTTP method. i.e. GET, POST, DELETE, PUT, etc. The path can handle any HTTP methods, you'll path the undef for this argument. You can specify the multiple HTTP methods in ArrayRef like $router->add([qw(GET HEAD)], '/', 'top'). It will be matching with the REQUEST_METHOD.
$http_method
undef
$router->add([qw(GET HEAD)], '/', 'top')
REQUEST_METHOD
$path is the path string. It will be matching with the PATH_INFO.
$path
PATH_INFO
$opaque is the destination path data. Any data is OK.
$opaque
my ($dest, $captured, $is_method_not_allowed) = $router->match($http_method:Str, $path:Str)
Matching with the router.
$http_method is the HTTP request method. It's $env->{REQUEST_METHOD} in PSGI.
$env->{REQUEST_METHOD}
$path is the path string. It's $env->{PATH_INFO} in PSGI.
$env->{PATH_INFO}
Return Value:
If the request is not matching with any path, this method returns empty list.
If the request is matched well then, return $dest, $captured. And $is_method_not_allowed is false value.
$dest
$captured
$is_method_not_allowed
If the request path is matched but the $http_method is not matched, then $dest and $captured is undef. And $is_method_not_allowed is true value. You got this then you need to return 405 Method Not Allowed error.
405 Method Not Allowed
my $regexp = $router->regexp()
Get a compiled regexp for debugging.
my @routes = $router->routes()
EXPERIMENTAL
Get the list of registered routes. Every routes has following schema.
[Maybe[ArrayRef], Str, Any]
For example:
[['GET','HEAD'], "/foo", \&dispatch_foo]
Tokuhiro Matsuno
To install Router::Boom, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Router::Boom
CPAN shell
perl -MCPAN -e shell install Router::Boom
For more information on module installation, please visit the detailed CPAN module installation guide.