NAME
MVC::Neaf::Route - Route (path+method) class for Not Even A Framework
DESCRIPTION
This module contains information about a handler defined using MVC::Neaf: method, path, handling code, connected hooks, default values etc.
It is useless in and off itself.
METHODS
new
Route has the following read-only attributes:
parent (required)
path (required)
method (required)
code (required)
default
cache_ttl
path_info_regex
param_regex
description
public
caller
where
tentative
override TODO
hooks
helpers
clone
Create a copy of existing route, possibly overriding some of the fields.
lock()
Prohibit any further modifications to this route.
is_locked
Check that route is locked.
add_form()
add_form(
name
=>
$validator
)
Create a named form for future query data validation via $request->form("name")
. See "form" in MVC::Neaf::Request.
The $validator
is one of:
An object with
validate
method accepting one\%hashref
argument (the raw form data).A CODEREF accepting the same argument.
Whatever is returned by validator is forwarded into the controller.
Neaf comes with a set of predefined validator classes that return a convenient object that contains collected valid data, errors (if any), and an is_valid flag.
The engine
parameter of the functional form has predefined values Neaf
(the default), LIVR
, and Wildcard
(all case-insensitive) pointing towards MVC::Neaf::X::Form, MVC::Neaf::X::Form::LIVR, and MVC::Neaf::X::Form::Wildcard, respectively.
You are encouraged to use LIVR
(See Validator::LIVR and LIVR grammar) for anything except super-basic regex checks.
If an arbitrary class name is given instead, new()
will be called on that class with \%spec ref as first parameter.
Consider the following script:
use
MVC::Neaf;
neaf
form
=>
my
=> {
foo
=>
'\d+'
,
bar
=>
'[yn]'
};
get
'/check'
=>
sub
{
my
$req
=
shift
;
my
$in
=
$req
->form(
"my"
);
return
$in
->is_valid ? {
ok
=>
$in
->data } : {
error
=>
$in
->error };
};
neaf->run
And by running this one gets
bash$ curl http://localhost:5000/check?bar=xxx
{
"error"
:{
"bar"
:
"BAD_FORMAT"
}}
bash$ curl http://localhost:5000/check?bar=y
{
"ok"
:{
"bar"
:
"y"
}}
bash$ curl http://localhost:5000/check?bar=yy
{
"error"
:{
"bar"
:
"BAD_FORMAT"
}}
{
"ok"
:{
"bar"
:
"n"
,
"foo"
:
"137"
}}
bash$ curl http://localhost:5000/check?foo=leet
{
"error"
:{
"foo"
:
"BAD_FORMAT"
}}
get_form()
$neaf
->get_form(
"name"
)
Fetch form named "name" previously added via add_form to this route or one of its parent routes.
See "form" in MVC::Neaf::Request. See also "add_form".
post_setup
Calculate hooks and path-based defaults.
Locks route, dies if already locked.
INTERNAL LOGIC
The following methods are part of NEAF's core and should not be called unless you want something very special.
dispatch_logic
dispatch_logic(
$req
,
$stem
,
$suffix
)
May die. May spoil request.
Apply controller code to given request object, path stem, and path suffix.
Upon success, return a Neaf response hash (see "THE-RESPONSE" in MVC::Neaf).
LICENSE AND COPYRIGHT
This module is part of MVC::Neaf suite.
Copyright 2016-2023 Konstantin S. Uvarin khedin@cpan.org
.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.