问题标签 [plack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - 如何将静态 CGI 风格的 perl 脚本(xxx.pl)转换为动态 PSGI 应用程序?
CGI 风格的 perl 脚本很难用这种风格进行测试:
(注意:代码在 ruby 中,使用Rack::Test
)。
但是,如果我可以将静态文件转换为 PSGI 应用程序(代码引用,接受$env
作为参数,返回[$status, $header, $body]
),事情就会变得简单,Plack::Test
剩下的就交给我了。
我正在阅读 PSGI 规范,通常我可以看到这条路线。但我还是想知道这有没有存在之轮?
另外,我认为Plack::Test
它的界面不如Rack::Test
任何替代品漂亮?
perl - 如何为 PSGI / Plack Web 应用程序(在 Perl 中)提供静态文件(图像等)?
如何为基于 PSGI / Plack 的 Web 应用程序提供静态文件(图像、javascript、样式表)?
答案可能取决于使用的 Web 服务器,无论是 CGI、FastCGI、mod_psgi 还是像 Starman 这样的纯 Perl。我听说使用 Plack::Middleware::Static 或 Plack::App::File(连同 Plack::App::URLMap)仅用于开发......
perl - 提供静态文件句柄时出现 Twiggy 400 错误请求
我有一个难以在较小的测试用例中重现的问题,但这里是基本描述:
我以 root 身份运行 Perl 的 Twiggy Web 服务器,绑定到端口 81。
我使用 Plack::App::File->(root => "/my/directory") 作为默认 Web 应用程序来提供来自 /my/directory/... 的静态内容
对于小文件,这可以正常工作,但对于较大的文件(例如,超过 30kB 左右),输出会被 400 Bad Request 错误相当可靠地截断。例如,我请求 /my.css,它服务于 /my/directory/my.css 的开头,但以:
/li>
我希望 Twiggy 提供整个文件,而不是像上面那样截断它。
我尝试通过 Twiggy/Server.pm 查看服务文件句柄会发生什么,但我迷路了。:(
perl - 使用 Plack 和 Middlewares 时将默认 perl 的 IO 切换为 utf-8 是否正确?
两个出发点:
- 在他对为什么现代 Perl 默认避免使用 UTF-8 的回答中?tchrist 指出了确保在 Perl 中正确处理 Unicode 所需的 52 件事。答案显示了带有一些
use
语句的样板代码。关于使用 Unicode 的一个类似问题是如何使用现代 perl 和 utf8 默认设置“使用 My::defaults”? PSGI规范在设计上是面向字节的。我有责任对所有内容进行编码/解码,因此对于 Plack 应用程序,正确的方法是对输出进行编码和对输入进行解码,例如:
/li>
使用是否正确
在 PSGI 应用程序和/或我的模块中?
uni::perl
将 Perl 的默认 IO 更改为 UTF-8,因此:
这样做会破坏 Plack 或其中间件中的某些内容吗?或者是为 Plack 编写应用程序的唯一正确方法,在打开时显式编码/解码,所以没有open
pragma?
perl - 将 Modperl 配置转换为 Plack - 按文件扩展名运行不同的处理程序
我正在尝试将我当前的 Apache/Modperl 站点转移到 Starman,并且需要使用针对不同文件扩展名的不同处理程序构建 app.psgi。类似于 Apache 中的东西:
我现在有:
但是如何使用构建器?
需要的“规则”:
- 如果请求没有任何扩展名,或者请求以 '/' 结尾
- 应该处理
$Mapp
- 应该处理
- 如果请求以某些扩展名结束,则
.m
并.mh
应由$Mapp
.p
并.ph
应由$Papp
- 所有其他带有扩展名的文件(如 .css .js .pdf .jpg ...)都应作为静态文件处理。
当然,将每个静态文件放到某个树中会容易得多,但是给出了当前的应用程序,现在我只想将它移动到 Startman,重构 - 稍后。
nginx - nginx/starman/dancer web 栈的解释
我从事网络编程已经有一段时间了,对 LAMP 堆栈非常熟悉。我决定尝试使用 nginx/starman/dancer 堆栈,但我对如何从高层次理解所有部分如何相互关联感到有些困惑。设置堆栈似乎不像设置 LAMP 堆栈那么简单,但这可能是因为我不太了解这些部分之间的关系。
我了解 nginx 所扮演的角色——一个轻量级的网络服务器/代理——但我对 starman 与 pgsi、plack 和 dancer 的关系感到困惑。
我希望对这些部分如何相互关联以及为什么每个部分都是必要的(或不必要的)进行堆栈设置进行高级分解。谢谢!
perl - Plack::Builder 得到职位
有没有办法在特定方法(GET 或 POST)的构建器部分中指定,但不能同时指定两者?我的构建器部分示例。
它处理 get 和 post 请求,如何禁用 GET 请求的处理?
谢谢。
perl - 使用 PSGI,是否可以更改上传文件的命名方式?
我有一个小型 PSGI 应用程序,它从表单上传并将其传递给另一个脚本进行处理:
该文件已成功上传,类似于/tmp/Fw8n6j0ICn.txt
. 问题是,处理依赖于文件在上传时被命名。
是否可以更改文件的上传方式以便它们转到/tmp/Fw8n6j0ICn/original_name.txt
?
perl - Apache 服务器上使用 Plack::Runner 的 Perl Dancer
我有一个 Perl Dancer 网络应用程序,我想在 apache 服务器上运行(在 centos 6 上)。我在 webapp 的 rootdir 中放置了一个指向使用 Pluck::Runner 模块的 public/dispatch.cgi 脚本的符号链接 (index.html)。
问题是在加载页面时,它找不到需要的文件(例如 sqlite 文件),实际上路由搞砸了,因为它在 $appname/index.pl/blabla... 寻找路由而不是$应用程序名/blabla...
我认为这里需要某种 apache 指令或规则,但我做得不够好。
我希望有人可以帮助我解决这个问题。
先谢谢了。罗伊。
perl - Perl - Facebook 图形 API
以前很容易区分桌面应用程序和 Web 应用程序,但今天在阅读文档时我注意到这种差异不太明显。
我正在使用 Facebook::Graph 模块创建桌面应用程序,但仍然无法超越配置阶段。我被困在身份验证阶段:
(http://metacpan.org/pod/Facebook::Graph)
它一直告诉我“需要$ env”。阅读文档后,我意识到 Plack 只关注 Web 应用程序。
(http://metacpan.org/pod/Plack::Request)
你能证实这一点吗?如果没有,我该如何通过这一步?
使用 Mechanize 获取 access_token 然后按照文档中的描述发出 GET 请求不会有问题,但我不想让我的存在复杂化,所以如果有其他方法......