GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  ROUTER::BOOM (3)

.ds Aq ’

NAME

Router::Boom - Fast routing engine for web applications

CONTENTS

SYNOPSIS



    use Router::Boom;

    my $router = Router::Boom->new();
    $router->add(/, dispatch_root);
    $router->add(/entrylist, dispatch_entrylist);
    $router->add(/:user, dispatch_user);
    $router->add(/:user/{year}, dispatch_year);
    $router->add(/:user/{year}/{month:\d+}, dispatch_month);
    $router->add(/download/*, dispatch_download);

    my $dest = $router->match($env->{PATH_INFO});



DESCRIPTION

Router::Boom is a fast path routing engine for Perl5.

MEHTODS

my $router = Router::Boom->new() Create new instance.
$router->add($path:Str, $destination:Any) Add new route.
my ($destination, $captured) = $router->match($path:Str); Matching the route. If matching successfully, this method returns 2 values.

First: The destination value, you registered. Second: Captured values from the path.

If matching was failed, this method returns empty list.

HOW TO WRITE A ROUTING RULE

    plain string



    $router->add( /foo, { controller => Root, action => foo } );



    :name notation



    $router->add( /wiki/:page, { controller => WikiPage, action => show } );
    ...
    $router->match(/wiki/john);
    # => {controller => WikiPage, action => show, page => john }



’:name’ notation matches qr{([^/]+)}.

    ’*’ notation



    $router->add( /download/*, { controller => Download, action => file } );
    ...
    $router->match(/download/path/to/file.xml);
    # => {controller => Download, action => file, * => path/to/file.xml }



’*’ notation matches qr{(.+)}. You will get the captured argument as the special key: *.

    ’{year}’ notation



    $router->add( /blog/{year}, { controller => Blog, action => yearly } );
    ...
    $router->match(/blog/2010);
    # => {controller => Blog, action => yearly, year => 2010 }



’{year}’ notation matches qr{([^/]+)}, and it will be captured.

    ’{year:[0-9]+}’ notation



    $router->add( /blog/{year:[0-9]+}/{month:[0-9]{2}}, { controller => Blog, action => monthly } );
    ...
    $router->match(/blog/2010/04);
    # => {controller => Blog, action => monthly, year => 2010, month => 04 }



You can specify regular expressions in named captures.

Note. You can’t include normal capture in custom regular expression. i.e. You can’t use {year:(\d+)} . But you can use {year:(?:\d+)}.

PERFORMANCE

Router::Boom is pretty fast!



                      Rate Router::Simple   Router::Boom
    Router::Simple  8000/s             --           -90%
    Router::Boom   83651/s           946%             --



Router::Boom’s computational complexity is not linear scale, bug Router::Simple’s computational complexity is linear scale.

Then, Router::Simple get slower if registered too much routes. But if you’re using Router::Boom then you don’t care the performance :)

LICENSE

Copyright (C) tokuhirom.

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

AUTHOR

tokuhirom <tokuhirom@gmail.com>

SEE ALSO

Router::Simple is my old one. But it’s bit slow and complicated.

Path::Dispatcher is similar, but so complex.

Path::Router is heavy. It depends on Moose.

HTTP::Router has many dependencies. It is not well documented.

HTTPx::Dispatcher is my old one. It does not provide an OO-ish interface.

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 ROUTER::BOOM (3) 2016-03-17

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.