在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'.
请给出您的建议以解决该问题,我不确定这两个模块中的哪个是导致此问题的原因。
谢谢
答案 0 :(得分:1)
Dancer2主要是面向对象的。它总是将$self
传递给您的路由处理程序。警告非常清楚。您不应使用该DSL关键字,而应通过$self->app
访问请求。
您需要从路由处理程序的参数列表中获取$self
。在同一程序包或任何其他程序包中使用匿名子项还是对命名子项的引用都没有关系。
use Dancer2;
get '/' => \&main::foo;
sub foo {
my $self = shift;
return $self->app->request->params;
}