首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Plack/Apache中截取回复

如何在Plack/Apache中截取回复
EN

Stack Overflow用户
提问于 2020-05-15 19:34:56
回答 1查看 38关注 0票数 2

给定以下处理程序(直接来自https://metacpan.org/pod/Plack::Handler::Apache2)

代码语言:javascript
复制
package My::ModPerl::Handler;
use Plack::Handler::Apache2;

sub get_app {
  # magic!
}

sub handler {
  my $r = shift;       # Apache2::RequestRec
  my $app = get_app(); # CODE
  #-- #(1)
  Plack::Handler::Apache2->call_app($r, $app);
  #-- #(2)
}

由于app是一个黑盒,有没有办法以某种方式检索生成的完整响应?我想在标记为#(2)的行中执行此操作,并同时获取标题和正文。理想情况下,我会在#(1)行中做一些神奇的事情,以某种方式强制$r存储响应(然后在#(2)中检索它)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-15 20:07:01

您可以将您的应用程序包装在一个中间件中,使PSGI响应在您的处理程序代码中可用。

代码语言:javascript
复制
package My::ModPerl::Handler;
use Plack::Handler::Apache2;

sub get_app {
    # magic!
}

sub handler {
    my $r   = shift;        # Apache2::RequestRec
    my $app = get_app();    # CODE

    my $res;                # this will hold the response

    Plack::Handler::Apache2->call_app(
        $r,
        sub {
            my $env = shift;
            $res = $app->($env);    # closes over outside variable
            return $res;
        }
    );

    # $res == [ $status, $headers, $body ]
}

这段代码结束在$res上,并分配来自应用程序内部的响应(或者更确切地说,是它周围的额外一层)。然后,您可以在您自己的代码中的Apache处理程序代码之外使用它。

请注意,我还没有运行过这段代码,但我非常确定它应该可以工作。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61818249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档