NAME
Nephia - Mini WAF
SYNOPSIS
### Get started the Nephia!
$ nephia-setup MyApp
### And, plackup it!
$ cd myapp
$ plackup
DESCRIPTION
Nephia is a mini web-application framework.
MOUNT A CONTROLLER
Use "path" function as following in lib/MyApp.pm .
First argument is path for mount a controller. This must be string.
Second argument is controller-logic. This must be code-reference.
In controller-logic, you may get Plack::Request object as first-argument, and controller-logic must return response-value as hash-reference or Plack::Response object.
Basic controller - Makes JSON response
Look this examples.
path '/foobar' => sub {
my ( $req ) = @_;
# Yet another syntax is following.
# my $req = req;
return {
name => 'MyApp',
query => $req->param('q'),
};
};
This controller outputs response-value as JSON, and will be mounted on "/foobar".
Use templates - Render with Xslate (Kolon-syntax)
path '/' => sub {
return {
template => 'index.tx',
title => 'Welcome to my homepage!',
};
};
Attention to "template" attribute. If you specified it, controller searches template file from view-directory and render it.
If you use multibyte-string in response, please remember 'use utf8;' and, you may specify character-set as like as following.
path '/' => sub {
return {
template => 'mytemplate.tx',
title => 'わたしのホォムペェジへよおこそ!',
charset => 'Shift_JIS',
};
};
If you not specified 'charset', it will be 'UTF-8'.
Makes any response - Using "res" function
path '/my-javascript' => sub {
return res {
content_type( 'text/javascript' );
body( 'alert("Oreore!");' );
};
};
"res" function returns Plack::Response object with customisable DSL-like syntax.
USING CONFIG
First, see app.psgi that generated by nephia-setup.
use strict;
use warnings;
use FindBin;
use lib ("$FindBin::Bin/lib", "$FindBin::Bin/extlib/lib/perl5");
use MyApp;
MyApp->run;
You may define config with run method as like as following.
MyApp->run(
attr1 => 'value',
logpath => '/path/to/log',
...
);
And, you can access to these config in your application as following.
path '/foo/bar' => sub {
my $config = config;
};
STATIC CONTENTS ( like as images, javascripts... )
You can look static-files that is into root directory via HTTP.
VALIDATE PARAMETERS
You may use validator with validate function.
path '/some/path' => sub {
my $params = validate
name => { isa => 'Str', default => 'Nameless John' },
age => { isa => 'Int' }
;
};
See documentation of validate method and Data::Validator.
FUNCTIONS
path $path, $coderef_as_controller;
Mount controller on specified path.
req
Return Plack::Request object. You can call this function in coderef that is argument of path().
res $coderef
Return Plack::Response object with customisable DSL-like syntax.
config
Return config as hashref.
validate %validation_rules
Return validated parameters as hashref. You have to set validation rule as like as Data::Validator's instantiate arguments.
AUTHOR
ytnobody <ytnobody@gmail.com>
SEE ALSO
Plack::Request
Plack::Response
Plack::Builder
Text::Xslate
Text::Xslate::Syntax::Kolon
JSON
Data::Validator
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 63:
Non-ASCII character seen before =encoding in ''わたしのホォムペェジへよおこそ!','. Assuming UTF-8