UR::Service::UrlRouter(3pm)

UR::Service::UrlRouter3pm

Psgi-aware router for incoming requests

Usage

  my $r = UR::Service::UrlRouter->create();
  $r->GET('/index.html', \&handle_index);
  $r->POST(qr(update/(.*?).html, \&handle_update);
  my $s = UR::Service::WebServer->create();
  $s->run( $r );

Overview

This class acts as a middleman, routing requests from a PSGI server to the appropriate function to handle the requests.

Properties

verbose

If verbose is true, the object will print details about the handled requests to STDOUT.

Methods

$r->GET($URLish, $handler)
$r->POST($URLish, $handler)
$r->PUT($URLish, $handler)
$r->DELETE($URLisn, $handler)

These four methods register a handler for the given request method + URL pair. The first argument specifies the URL to match against, It can be specified in one of the following ways

$string

A simple string matches the incoming request if the request's path is eq to the $string

qr(some regex (with) captures)

A regex matches the incoming request if the path matches the regex. If the regex contains captures, these are passed as additional arguments to the $handler.

$coderef

A coderef matches the incoming request if $coderef returns true. $coderef is given one acgument: the PSGI env hashref.

$handler is a CODE ref. When called, the first argument is the standard PSGI env hashref.

$r->__call__

__call__ is not intended to be called directly.

This class overloads the function dereference (call) operator so that the object may be used as a callable object (ie. $obj->(arg, arg)). As overload expects, __call__ returns a code ref that handles the PSGI request by finding an appropriate match with the incoming request and a previously registered handler. If no matching handler is found, it returns a 404 error code.

If multiple handlers match the incoming request, then only the earliest registered handler will be called.

Releases

6 releases since Debian 8 (Jessie); the text changed 4 times.

  1. 8
  2. 9
  3. 10–11
  4. 12
  5. 13

From libur-perl 0.470+ds-3 in Debian 13 (Trixie). Parsed by carta from the page's man source.