插件 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;
}
在 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;
}