Mojolicious::Routes

簡介

use Mojolicious::Routes;

# Simple route
my $r = Mojolicious::Routes->new;
$r->route('/')->to(controller => 'blog', action => 'welcome');

# More advanced routes
my $blog = $r->under('/blog');
$blog->get('/list')->to('blog#list');
$blog->get('/:id' => [id => qr/\d+/])->to('blog#show', id => 23);
$blog->patch(sub { shift->render(text => 'Go away!', status => 405) });

Mojolicious::Routes是Mojolicious Web框架的核心。

屬性

Mojolicious::Routes 從 Mojolicious::Roures::Route繼承了所有的屬性,并實現(xiàn)以下屬性。

base_classes

my $classes = $r->base_classes;
$r          = $r->base_classes(['MyApp::Controller']);

用于識別控制器的基類,默認為Mojolicious::Controller 和Mojo。

cache

my $cache = $r->cache;
$r        = $r->cache(Mojo::Cache->new);

路徑緩存,默認為Mojo::Cache對象。

conditions

my $conditions = $r->conditions;
$r             = $r->conditions({foo => sub {...}});

包含所有可用的條件。用于有條件的訪問控制器。

hidden

my $hidden = $r->hidden;
$r         = $r->hidden(['attr', 'has', 'new']);

指定在路由器中隱藏的控制器屬性和方法,默認為 attr、has、new 和 tap。

namespaces

my $namespaces = $r->namespaces;
$r             = $r->namespaces(['MyApp::Controller', 'MyApp']);

命名空間,用于加載控制器的命名空間。

# Add another namespace to load controllers from
push @{$r->namespaces}, 'MyApp::MyController';

shortcuts

my $shortcuts = $r->shortcuts;
$r            = $r->shortcuts({foo => sub {...}});

包含所有可用的shortcuts,用于簡寫的指定路由的控制器的方法。

方法

Mojolicious::Routes 從Mojolicious::Routes::Route繼承所有方法,并實現(xiàn)以下方法。

add_condition

$r = $r->add_condition(foo => sub {...});

注冊一個條件。

$r->add_condition(foo => sub {
  my ($route, $c, $captures, $arg) = @_;
  ...
  return 1;
});

add_shortcut

$r = $r->add_shortcut(foo => sub {...});

注冊一個shortcut.

$r->add_shortcut(foo => sub {
  my ($route, @args) = @_;
  ...
});

continue

$r->continue(Mojolicious::Controller->new);

繼續(xù)調(diào)度后面的鏈,并在Mojolicious中為每個action觸發(fā)around_action事件。

dispatch

使用match方法匹配路由,并對匹配到的路由調(diào)用continue方法。

hide

$r = $r->hide('foo', 'bar');

在路由中隱藏控制器的屬性和方法。

is_hidden

my $bool = $r->is_hidden('foo');

檢查控制器的一個屬性或方法名是否已經(jīng)在路由器中隱藏了。

lookup

my $route = $r->lookup('foo');

通過Mojolicious::Routes::Route中的find方法按名稱查找路由,并緩存結(jié)果以供將來使用。

match

$r->match(Mojolicious::Controller->new);

使用Mojolicious::Routes::Match對象進行路由匹配。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 簡介 Mojolicious::Routes::Route是Mojolicious::Routes使用的路由窗口。...
    JSON_NULL閱讀 383評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • github地址,歡迎大家提交更新。 express() express()用來創(chuàng)建一個Express的程序。ex...
    Programmer客棧閱讀 2,808評論 0 1
  • 1. 簡介 這篇文章主要的目的是分析理解express的源碼,網(wǎng)絡上關于源碼的分析已經(jīng)數(shù)不勝數(shù),這篇文章準備另辟蹊...
    沒事造輪子閱讀 1,475評論 0 8
  • 以前的自己沒有開竅,迷迷糊糊的,曾有一段時間,那時的自己負能量滿滿,總是抱怨發(fā)牢騷找借口,好像自己周圍被這種迷霧...
    劉虎虎222婚禮紀實閱讀 254評論 0 0

友情鏈接更多精彩內(nèi)容