我正在练习Perl和PSGI/Plack。只是尝试简单的PSGI示例应用程序:
app.psgi
#!/usr/bin/perl
my $counter = 0;
my $app = sub {
my $env = shift;
my $path = $env->{PATH_INFO} || $env->{REQUEST_URI};
$counter++;
my $content = "Hellow world.nCounter=$counternPath: $pathn";
return [ 200, [ 'Content-type', 'text/plain' ], [ $content ] ]
};
然后运行:
plackup app.psgi
如果我将浏览器指向任何路径,比如/news/world:
http://localhost:5000/new/world
这是好的,我得到$path变量设置为/news/world,我将处理cgi响应。
如果我指向静态文件,如logo.pnghttp://localhost:5000/logo.png
我也得到$path变量设置为/logo.png
问题是,为什么plackup服务器不自动提供静态图像文件logo.png
我必须手动操作吗?如果是这样,那就意味着每次请求我都必须先ping文件系统检查是否-f $path.
这意味着我正在构建一个完整的服务器处理程序而不仅仅是我的脚本处理程序。我不明白的是
使用Plack::Middleware::Static模块。它允许应用程序从根目录提供静态文件。
Plack::Middleware::Static
适用于静态目录。但是您可以处理文件处理程序。您可以尝试在主体中放入GLOB标量和标题application/pdf
。