HTTP::Engine - Web Server Gateway Interface and HTTP Server Engine Drivers (Yet Another Catalyst::Engine)
use HTTP::Engine; my $engine = HTTP::Engine->new( interface => { module => 'ServerSimple', args => { host => 'localhost', port => 1978, }, request_handler => 'main::handle_request',# or CODE ref }, ); $engine->run; use Data::Dumper; sub handle_request { my $req = shift; HTTP::Engine::Response->new( body => Dumper($req) ); }
A substantial document. (A tutorial, the Cookbook and hacking HowTo)
Improvement in performance and resource efficiency. Most specifications are frozen. The specification is changed by the situation.
I want to perform Async support. (AnyEvent? Danga::Socket? IO::Async?)
switched to Any::Moose
It is an adjustment stage to the following version.
Version 0.0.x is a concept release, the internal interface is still fluid. It is mostly based on the code of Catalyst::Engine.
version over 0.0.13 is incompatible of version under 0.0.12.
using HTTP::Engine::Compat module if you want compatibility of version under 0.0.12.
version 0.0.13 is unsupported of context and middleware.
Middleware can be used if you wish. Please see HTTP::Engine::Middleware.
HTTP::Engine abstracts handling the input and output of various web server environments, including CGI, mod_perl and FastCGI.
While some people use <CGI.pm> in a CGI environment, but switch <Apache::Request> under mod_perl for better performance, these HTTP request abstractions have incompatible interfaces, so it is not easy to switch between them.
HTTP::Engine will prepare a HTTP::Engine::Request object for you which is optimized for your current environment, and pass that to your request handler. Your request handler than prepares a HTTP::Engine::Response object, which we communicate back to the server for you.
HTTP::Engine::Request covers the bases of common request process tasks, like handling GET and POST parameters and processing file uploads. Unlike CGI.pm, but like most other web programming languages, it allows you to mix GET and POST parameters.
And importantly, it allows you to seamlessly move your code from CGI to a persistent without rewriting your code. At the same time, you'll maintain the possibility of additional performance benefits, as HTTP::Engine can transparently take advantage of native mod_perl functions when they are available.
The community can be found via:
IRC: irc.perl.org#http-engine irc.freenode.net#coderepos Mailing list: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/http-engine GitHub: http://github.com/http-engine/HTTP-Engine Twitter: http://twitter.com/httpengine
The following things are no longer used
Wiki Page: http://coderepos.org/share/wiki/HTTP%3A%3AEngine SVN: http://svn.coderepos.org/share/lang/perl/HTTP-Engine Trac: http://coderepos.org/share/browser/lang/perl/HTTP-Engine
http://en.wikibooks.org/wiki/Perl_Programming/HTTP::Engine writing by gugod++.
Interfaces are the actual environment-dependent components which handles the actual interaction between your clients and the application.
For example, in CGI mode, you can write to STDOUT and expect your clients to see it, but in mod_perl, you may need to use $r->print instead.
Interfaces are the actual layers that does the interaction. HTTP::Engine currently supports the following:
# XXX TODO: Update the list
for test code interface
experimental
old style
Interfaces can be specified as part of the HTTP::Engine constructor:
my $interface = HTTP::Engine::Interface::FastCGI->new( request_handler => ... ); HTTP::Engine->new( interface => $interface )->run();
Or you can let HTTP::Engine instantiate the interface for you:
HTTP::Engine->new( interface => { module => 'FastCGI', args => { } request_handler => ... } )->run();
session manager authentication manager URL dispatcher model manager toy black magick
HTTP abstraction layer
WSGI Rack
Kazuhiro Osawa <yappo <at> shibuya <döt> pl>
Daisuke Maki
tokuhirom
nyarla
marcus
hidek
dann
typester (Interface::FCGI)
lopnor
nothingmuch
kan
Mark Stosberg (documentation)
walf443
kawa0117
mattn
otsune
gugod
stevan
hirose31
fujiwara
HTTP::Engine::Middleware, HTTP::Engine::Compat, HTTPEx::Declare, Any::Moose, Mouse, Moose
We moved to GitHub.
git clone git://github.com/http-engine/HTTP-Engine.git
HTTP::Engine's Git repository is hosted at http://github.com/http-engine/HTTP-Engine. patches and collaborators are welcome.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install HTTP::Engine, copy and paste the appropriate command in to your terminal.
cpanm
cpanm HTTP::Engine
CPAN shell
perl -MCPAN -e shell install HTTP::Engine
For more information on module installation, please visit the detailed CPAN module installation guide.