首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl Mojolicious下

Perl Mojolicious下
EN

Stack Overflow用户
提问于 2017-03-31 21:18:40
回答 1查看 164关注 0票数 2

为了在这个mojolicious应用程序中正确路由输入信息,我使用了“under”功能。为什么这段代码不能工作,但是第二个块中的代码可以从数据库中实际删除所选的项目。

代码语言:javascript
复制
 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');

第二个(工作)块如下所示

代码语言:javascript
复制
 $r->delete('/hosts_services/:hosts_services_id')->
        to('hosts#hosts_services_deletion')->
        name('hosts_services_deletion');
EN

回答 1

Stack Overflow用户

发布于 2020-06-06 04:18:35

代码语言:javascript
复制
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;

您始终可以这样列出所有已定义的路由:

代码语言:javascript
复制
script/a routes

此功能对于在此类情况下进行调试非常有用。你可以在Mojolicious::Commands这里阅读更多关于Mojolicious CLI的信息。

下面是上面提到的路由的示例输出:

代码语言:javascript
复制
/foo/:bar  *       foobar
  +/       DELETE  
  +/     
*

因此,我们可以看到,Mojolicious现在将为DELETE和任何其他请求方法提供url /foo/:bar/,但尾随斜杠始终是可选的,/foo/:bar将工作得很好。

在这种情况下:under('/foo/:bar')->to( example#zero )example#zero是中间目的地,因此在这个路由下定义的所有路由都将访问example#zero,并且只有在它继续执行自己的目的地之后。因此,under( ... )->to( ... )可以用于身份验证和其他类似的任务。在我的示例中,使用了不带to()under()

P.S. Mojolicious附带了精彩的文档,我鼓励每个人都积极使用它

Mojolicious::Routes::Route

Mojolicious::Guides::Routing

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43141771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档