Dancer2-Plugin-WebService
view release on metacpan or search on metacpan
lib/Dancer2/Plugin/WebService.pm view on Meta::CPAN
=head1 Built in plugin routes
These are plugin built in routes
WebService version
WebService/client client propertis
WebService/routes list the built-in and application routes
login login
logout logout
Usage examples
export url=http://127.0.0.1:3000 H="Content-Type: application/json"
alias curl="$(/usr/bin/which curl) --silent --user-agent Perl"
curl $url/WebService
curl $url/WebService/client
curl $url/WebService/routes?sort=true
curl "$url/WebService?to=json&pretty=true&sort=true"
curl $url/WebService?to=yaml
curl "$url/WebService?to=xml&pretty=false"
curl "$url/WebService?to=xml&pretty=true"
curl $url/WebService?to=human
curl $url/WebService?to=perl
curl $url
=head1 Application routes
Based on the code of our TestService ( lib/TestService.pm ) some examples of how to login, logout, and route usage
curl "$url/mirror?from=json&to=json&k1=a&k2=b" -d '{"k1" : ["one","two","three"]}'
curl "$url/mirror?to=xml&pretty=true" -d '{"k1" : ["one","two","three"]}'
curl "$url/mirror?from=yaml&to=perl" -d '"k1" : ["one","two","three"]'
curl "$url/mirror?from=xml&to=yaml" -d '<root><k1>one</k1><k2>two</k2></root>'
Login
curl -X POST $url/login -H "$H" -d '{"username": "user1", "password": "s3cr3T+PA55sW0rD"}'
Protected application routes
curl $url/text
curl $url/text?token=17393926-5c8-0
curl $url/session_save?token=17393926-5c8-0 -H "$H" -X POST -d '{"k1":"v1", "k2":"v2", "k3":"v3"}'
curl $url/session_read?token=17393926-5c8-0
curl $url/session_delete?token=17393926-5c8-0 -H "$H" -X DELETE -d '["k3","k8","k9"]'
curl $url/session_read?token=17393926-5c8-0
Logout
curl $url/logout?token=17393926-5c8-0
curl $url/logout -d '{"token":"17393926-5c8-0"}' -H "$H" -X POST
=head1 Plugin Installation
You should your run your APIs as a non privileged user e.g. the "dancer"
getent group dancer >/dev/null || groupadd dancer
getent passwd dancer >/dev/null || useradd -g dancer -l -m -c "Dancer2 WebService" -s $(which nologin) dancer
i=/var/lib/WebService; [ -d $i ] || { mkdir $i; chown -R dancer:dancer $i; }
i=/var/log/WebService; [ -d $i ] || { mkdir $i; chown -R dancer:dancer $i; }
cpanm Dancer2
cpanm Dancer2::Plugin::WebService
=head1 Create a sample application e.g. the "TestService"
Follow the I<CREATE_SAMPLE_APPLICATION> document to create the sample application I<TestService>
=head1 Start the application
To start it manual as user I<dancer> from the command line
=over 2
=item Production
sudo -u dancer plackup --host 0.0.0.0 --port 3000 --server Starman --workers=5 --env development -a /home/dancer/TestService/bin/app.psgi
=item While developing
sudo -u dancer plackup --host 0.0.0.0 --port 3000 --env development --app /home/dancer/TestService/bin/app.psgi --server HTTP::Server::PSGI
=back
view also the INSTALL document for details
=head1 Configure the loggger at the environment file
I<Application dir/environments/[development|production].yml>
log : "debug" # core, debug, info, warning, error
show_stacktrace : 0
no_server_tokens : 1
warnings : 1 # should Dancer2 consider warnings as critical errors?
show_errors : 1 # if true shows a detailed debug error page , otherse the views/404.tt or public/404.html
startup_info : 1 # print the banner
no_server_tokens : 1 # disable server tokens in production environments
logger : "file" # console: to STDOUT , file:to file
engines :
logger :
file :
log_format : '{"ts":"%T","host":"%h","pid":"%P","message":"%m"}'
log_dir : "/tmp"
file_name : "test.log"
=head1 See also
B<Plack::Middleware::REST> Route PSGI requests for RESTful web applications
B<Dancer2::Plugin::REST> A plugin for writing RESTful apps with Dancer2
B<RPC::pServer> Perl extension for writing pRPC servers
B<RPC::Any> A simple, unified interface to XML-RPC and JSON-RPC
B<XML::RPC> Pure Perl implementation for an XML-RPC client and server.
B<JSON::RPC> JSON RPC Server Implementation
=head1 AUTHOR
( run in 0.859 second using v1.01-cache-2.11-cpan-71847e10f99 )