为了在这个 mojolicious 应用程序中正确路由输入信息,我使用“under”功能。为什么此代码不起作用,但第二个块中的代码却可以实际从数据库中删除所选项目。
my $r_hostservices = $r->
under('/hosts_services:host_services_id')->
to('hosts_services#hosts_services');
$r_hostservices->
delete(':hosts_services_id')->
to('hosts#hosts_services_deletion')->
name('hosts_services_deletion');
第二个(工作)块如下
$r->delete('/hosts_services/:hosts_services_id')->
to('hosts#hosts_services_deletion')->
name('hosts_services_deletion');
package a;
use Mojo::Base 'Mojolicious';
# This method will run once at server start
sub startup {
my $self = shift;
# Load configuration from hash returned by config file
my $config = $self->plugin('Config');
# Configure the application
$self->secrets($config->{secrets});
# Router
my $r = $self->routes;
my $ur = $r->under('/foo/:bar');
$ur->delete()->to('example#two');
$ur->any()->to('example#one');
}
1;
您始终可以通过这种方式列出所有定义的路线:
script/a routes
此功能对于在这种情况下进行调试非常有用。您可以在此处阅读有关 Mojolicious CLI 的更多信息Mojolicious::命令.
这是带有上述路线的示例输出:
/foo/:bar * foobar
+/ DELETE
+/
*
所以,我们可以看到,Mojolicious 现在将提供 url/foo/:bar/
for DELETE
以及任何其他请求方法,但尾随斜杠始终是可选的,并且/foo/:bar
会工作得很好。
在这种情况下:under('/foo/:bar')->to( example#zero )
, example#zero
是中间目的地,因此在此定义的所有路线都将访问example#zero
并且只有之后它才会继续执行自己的目的地。所以,under( ... )->to( ... )
可用于身份验证和其他类似任务。在我的例子中under()
使用时无需to()
.
附: Mojolicious 附带了精彩的文档,我鼓励每个人都积极使用它
Mojolicious::路线::路线
Mojolicious::指南::路由
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)