Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Amon2::Web::DispatcherUseruContributed PeAmon2::Web::Dispatcher::RouterBoom(3)

NAME
       Amon2::Web::Dispatcher::RouterBoom - Router::Boom bindings

SYNOPSIS
	   package MyApp2::Web::Dispatcher;
	   use Amon2::Web::Dispatcher::RouterBoom;

	   use MyApp::Web::C::Foo;

	   base	'MyApp::Web::C';

	   get '/' => 'Foo#bar';

	   1;

DESCRIPTION
       This is a router	class for Amon2. It's based on Router::Boom.

DSL FUNCTIONS
       "get($path:Str, $destnation:Str)"
       "post($path:Str,	$destnation:Str)"
       "delete_($path:Str, $destnation:Str)"
       "any($path:Str, $destnation:Str)"
	       get  '/'	=> 'Root#index';
	       get  '/:user' =>	'User#show';
	       any  '/:user/update' => 'User#update';
	       post '/:user/blog/post' => 'Blog#post';
	       delete_ '/:user/blog/:id' => 'Blog#remove';

	   Add routes by DSL. First argument is	the path pattern in Path::Boom
	   rules.  Second argument is the destination method path.

	   Destination method pass is "${class}#${method}" form.

	   The path declared with get()	accepts	GET and	HEAD.  The path
	   declared with post()	accepts	POST method.  The path declared	with
	   delete_() accepts DELETE method.  The path declared with any()
	   accepts any methods.

       "base($klass:Str)"
	       base 'My::App::Web::C';

	   You can specify the base class name for 'Root#index'	style
	   definition.

	   If you are write your dispatcher in following code, then the	method
	   for '/' is "My::App::Web::C::Root->index".

	       base 'My::App::Web::C';
	       get '/' => 'Root#index';

       "get($path:Str, $destnation:CodeRef)"
       "post($path:Str,	$destnation:CodeRef)"
       "delete_($path:Str, $destnation:CodeRef)"
       "any($path:Str, $destnation:CodeRef)"
	       get  '/'	=> sub {
		   my ($c) = @_;
		   ...
	       };
	       get  '/:user' =>	sub {
		   my ($c, $args) = @_;
		   $c->render(
		       'user.tx' => {
			   user	=> $args->{user},
		       },
		   );
	       };

	   Add routes by DSL. First argument is	the path pattern in Path::Boom
	   rules.  Second argument is the destination code.

	   Callback function's first argument is the context object. Second is
	   the captured	values from the	router.

ROUTING	RULES
       Router::Boom's routing rule is really flexible. You can embed regexp in
       your rule.

       "/foo/bar"
	   String literal matches strings.

       "/:foo"
	   ":foo" matches "qr{[^/]}". It's captured.

       "/{foo}"
	   "{foo}" is same as ":foo".

       "/{foo:.*}"
	   You can use the custom regexp for capturing.

       "/*"
	   "*" is same as "{*:.*}".

EXCEPTION HANDLER
       You can customize the exception handler.	You can	define the special
       named method 'handle_exception'.

	   package MyApp::Web::Dispatcher;

	   sub handle_exception	{
	       my ($class, $c, $e) = @_;

	       if (UNIVERSAL::isa($e, 'My::Exception::Validation')) {
		   return $c->create_simple_status_page(400, 'Bad Request');
	       } else {
		   return $c->res_500();
	       }
	   }

SEE ALSO
       Amon2

perl v5.32.1			  2022-04Amon2::Web::Dispatcher::RouterBoom(3)

NAME | SYNOPSIS | DESCRIPTION | DSL FUNCTIONS | ROUTING RULES | EXCEPTION HANDLER | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Amon2::Web::Dispatcher::RouterBoom&sektion=3&manpath=FreeBSD+13.1-RELEASE+and+Ports>

home | help