NAME
    HTTP::Router - Yet Another Path Router for HTTP

SYNOPSIS
      use HTTP::Router;

      my $router = HTTP::Router->new;

      my $route = HTTP::Router::Route->new(
          path       => '/',
          conditions => { method => 'GET' },
          params     => { controller => 'Root', action => 'index' },
      );
      $router->add_route($route);
      # or
      $router->add_route('/' => (
          conditions => { method => 'GET' },
          params     => { controller => 'Root', action => 'index' },
      ));

      # GET /
      my $match = $router->match($req);
      $match->params;  # { controller => 'Root', action => 'index' }
      $match->uri_for; # '/'

DESCRIPTION
    HTTP::Router provides a way of constructing routing tables.

    If you are interested in a Merb-like constructing way, please check
    HTTP::Router::Declare.

METHODS
  new
    Returns a HTTP::Router object.

  add_route($route)
  add_route($path, %args)
    Adds a new route. You can specify HTTP::Router::Route object, or path
    string and options pair.

    example:

      my $route = HTTP::Router::Route->new(
          path       => '/',
          conditions => { method => 'GET' },
          params     => { controller => 'Root', action => 'index' },
      );

      $router->add_route($route);

    equals to:

      $router->add_route('/' => (
          conditions => { method => 'GET' },
          params     => { controller => 'Root', action => 'index' },
      ));

  routes
    Returns registered routes.

  reset
    Clears registered routes.

  freeze
    Creates inline matcher using registered routes.

  thaw
    Clears inline matcher.

  is_frozen
    Returns true if inline matcher is defined.

  match($req)
    Returns a HTTP::Router::Match object that matches a given request. If no
    routes match, it returns "undef".

  route_for($req)
    Returns a HTTP::Router::Route object that matches a given request. If no
    routes match, it returns "undef".

AUTHOR
    NAKAGAWA Masaki <masaki@cpan.org>

    Takatoshi Kitano <kitano.tk@gmail.com>

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

SEE ALSO
    HTTP::Router::Declare, HTTP::Router::Route, HTTP::Router::Match,

    MojoX::Routes, <http://merbivore.com/>, HTTPx::Dispatcher, Path::Router,
    Path::Dispatcher