插件 DSL 方法 'request' 已弃用。使用'$self->app->request'代替'

Plugin DSL method 'request' is deprecated. Use '$self->app->request' instead'

在 perl 中,我使用 Dancer 2 框架工作,并使用这个插件

use Dancer2::Plugin::Deferred;
use Dancer2::Plugin::Locale::Wolowitz;

对于如下语句:

my $method = request->method();

my $params = request->params;

我在控制台上收到以下警告:

Plugin DSL method 'request' is deprecated. Use '$self->app->request' instead'.

请给出解决问题的建议,我不确定是这两个模块中的哪一个导致了这个问题。

谢谢

Dancer2 主要是面向对象的。它总是将 $self 传递给您的路由处理程序。警告非常明确。您不应使用该 DSL 关键字,而应通过 $self->app.

访问请求

您需要从路由处理程序的参数列表中获取 $self。在同一个包或任何其他包中使用匿名 sub 还是对命名 sub 的引用都没有关系。

use Dancer2;

get '/' => \&main::foo;

sub foo {
  my $self = shift;
  return $self->app->request->params;
}