Plack::Middleware::Recursive - Allows PSGI apps to include or forward requests
recursively
# with Builder
enable "Recursive";
# in apps
my $res = $env->{'plack.recursive.include'}->("/new_path");
# Or, use exceptions
my $app = sub {
# ...
Plack::Recursive::ForwardRequest->throw("/new_path");
};
Plack::Middleware::Recursive allows PSGI applications to recursively include or
forward requests to other paths. Applications can make use of callbacks stored
in "$env->{'plack.recursive.include'}" to
include another path to get the response (whether it's an array ref or
a code ref depending on your application), or throw an exception
Plack::Recursive::ForwardRequest anywhere in the code to forward the
current request (i.e. abort the current and redo the request).
This middleware passes through unknown exceptions to the outside middleware
stack, so if you use this middleware with other exception handlers such as
Plack::Middleware::StackTrace or Plack::Middleware::HTTPExceptions, be sure to
wrap this so Plack::Middleware::Recursive gets as inner as possible.
Tatsuhiko Miyagawa
Masahiro Honma
Plack Plack::Middleware::HTTPExceptions
The idea, code and interface are stolen from Rack::Recursive and
paste.recursive.