Perl中的Rails或Django样式路由

Neb*_*Fox 3 django perl routing ruby-on-rails url-routing

我已经习惯了Rails映射路由的方式或者Django在路由上使用正则表达式(我不期望在Django中,但这是我听说它是​​如何进行路由的)以及它们如何使用永久链接的样式来访问粒子网页.是否有可能在Perl中做同样的事情?

dra*_*tun 7

我认为具有大多数类似Rails的路由的Perl Web框架将是 Mojolicious

Mojolicious确实创建了一篇名为"Dispatchers for dummies"的优秀博客文章,比较了主要的Perl,Ruby和Python网页框架,并突出了他认为通过路由进行的改进Mojolicious.

不幸的是,上面的帖子不再在线:(相反,你必须满足于Mojolicious::Guides::Routing文档.这是一个来自文档的路由示例:

package MyApp;
use base 'Mojolicious';

sub startup {
    my $self = shift;

    # Router
    my $r = $self->routes;

    # Route
    $r->route('/welcome')->to(controller => 'foo', action => 'welcome');
}

1;
Run Code Online (Sandbox Code Playgroud)


还有其他Perl框架提供动作路由的直接URL:

可以在Perl5 wiki上找到更完整的Perl Web框架列表


如果你是框架不利,那么看看Plack(也见PSGI维基百科).这是一样的机架上Ruby和WSGI Python的.

这是Plack的一个快速而肮脏的例子:

use 5.012;
use warnings;

my $app = sub {
    my $env = shift;

    given ($env->{PATH_INFO}) {

        return [ 200, [ 'Content-Type' => 'text/plain' ], [ 'Hello Baz!' ] ]
            when '/hello/baz';

        default {
            return [ 200, [ 'Content-Type' => 'text/plain' ], [ 'Hello World' ]];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后使用plackup above_script.psgi并离开你去.