Plack 如何调试请求?

How can Plack debug a request?

我正在使用 Plack 调试 HTTP 客户端,其中 plack 服务器侦听端口 80,客户端发送请求。我如何使用 Plack 查看客户端请求?我正在尝试做这样的事情:

my $app = sub {
  my $self = shift;

  [200, ['Content-Type' => 'text/html'], [ $self ]];
};

如何调试请求?

PSGI/Plack 是对 HTTP 的抽象。它的目标是不必为实现细节操心(和没有它一样)。在您的应用程序看到请求时,它已经被解析为 $env 并且在 Plack 的表示中。

你可以猴子修补一些东西到 Plack::HTTPParser::PP 来转储 $chunks 出来看看有什么进来。你必须在你的环境中设置 PLACK_HTTP_PARSER_PP=1 以确保它加载纯 Perl 版本。

然而这看起来真的很乏味。如果您使用 Linux,则可以使用 netcat (nc)。在您的端口上监听,并向您正在测试的客户端发送请求。

$ nc -l 3000
GET / HTTP/1.1
Host: localhost:3000
User-Agent: curl/7.68.0
Accept: */*

在另一个终端上...

$ curl localhost:3000

如果您不关心确切的表示形式,而只关心它在解析后是否包含正确的内容,请先在您的 Plack 应用程序中转储 $env