名称

Mojolicous::路线::路线-路线

简介

使用Mojolicious::Routes::Route;my$r=Mojolicious::Routes::Route->new;

描述

Mojolicious::路由::路由是使用的路由容器Mojolicious::路线.

属性

Mojolicious::路由::路由实现以下属性。

儿童

我的$孩子=$r->孩子;$r=$r->children([Mojolicious::Routes::Route->new]);

此路由的子级,用于嵌套路由。

内联

我的$bool=$r->inline;$r=$r->inline($bool);

允许“低于”此路由的语义。

起源

我的$parent=$r->parent;$r=$r->parent(Mojolicious::Routes::Route->new);

此路线的父级,通常是Mojolicious::路由::路由对象。请注意,该属性被削弱了。

部分

我的$bool=$r->部分;$r=$r->部分($bool);

路由没有特定的结束,剩余的字符将在中捕获路径.

图案

我的$pattern=$r->模式;$r=$r->pattern(Mojolicious::Routes::pattern->new);

此路线的图案,默认为Mojolicious::路由::模式对象。

方法

Mojolicious::路由::路由从继承所有方法Mojo::基础并实现以下新功能。

添加子项(_C)

$r=$r->add_child(Mojolicious::Routes::Route->new);

向此路由添加子路由,如果需要,它将自动从当前父路由中删除。

#重新连接路线$r->add_child($r->find('foo'));

任何

我的$route=$r->any;my$route=$r->any('/:foo');my$route=$r->any('/:foo'=>sub($c){…});my$route=$r->any('/:foo'=>sub($c){…}=>'name');my$route=$r->any('/:foo'=>{foo=>'bar'}=>sub($c){…});我的$route=$r->any('/:foo'=>[foo=>qr/\w+/]=>sub($c){…});my$route=$r->any('/:foo'=>(agent=>qr/Firefox/)=>sub($c){…});my$route=$r->any([“GET”,“POST”]=>“/:foo”=>sub($c){…});我的$route=$r->any(['GET','POST']=>'/:foo'=>[foo=>qr/\w+/]);

生成Mojolicious::路由::路由对象匹配任何列出的HTTP请求方法或所有方法。

#带图案和目的地的路线$r->any(“/user”)->to(“user#whatever”);

所有参数都是可选的,但有些参数必须以特定的顺序出现,例如两个受支持的数组引用值,其中包含要匹配的HTTP方法和限制性占位符。

#使用HTTP方法、模式、限制占位符和目标进行路由$r->any(['DELETE','PUT']=>'/:foo'=>[foo=>qr/\w+/])->to('foo#bar');

还有两个支持的字符串值,包含路由模式和路由名称,默认为模式/和基于模式的名称。

#带有图案、名称和目的地的路线$r->any('/:foo'=>'foo_route')->to('foo#bar');

路由模式和名称之间的任意数量的键/值对可用于指定路由条件。

#带有模式、条件和目的地的路线$r->any('/'=>(agent=>qr/Firefox/))->to('foo#bar');

哈希引用用于指定可选占位符和存储的默认值。

#带图案、可选占位符和目的地的路线$r->any('/:foo'=>{foo=>'bar'})->to('foo#bar');

代码引用可用于指定哥伦比亚广播公司值合并为存储的默认值。

#以图案和闭合作为目的地的路线$r->any('/:foo'=>sub($c){$c->render(text=>“你好,世界!”);});

请参见Mojolicuis::指南::教程Mojolicious::辅助线::路由了解更多信息。

删除

我的$route=$r->delete;我的$route=$r->delete('/:foo');my$route=$r->delete('/:foo'=>sub($c){…});my$route=$r->delete('/:foo'=>sub($c){…}=>'name');我的$route=$r->delete('/:foo'=>{foo=>'bar'}=>sub($c){…});我的$route=$r->delete('/:foo'=>[foo=>qr/\w+/]=>sub($c){…});my$route=$r->delete('/:foo'=>(agent=>qr/Firefox/)=>sub($c){…});

生成Mojolicious::路由::路由仅对象匹配删除请求,采用与“任何”(除了要匹配的HTTP方法,这些方法是隐含的)。请参见Mojolicuis::指南::教程Mojolicious::辅助线::路由了解更多信息。

#带目的地的路线$r->delete('/user')->to('user#remove');

找到

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

按名称查找子路由,自定义名称优先于自动生成的名称。

#更改命名路由的默认参数$r->find('show_user')->to(foo=>'bar');

得到

我的$route=$r->get;my$route=$r->get('/:foo');my$route=$r->get('/:foo'=>sub($c){…});my$route=$r->get('/:foo'=>sub($c){…}=>'name');我的$route=$r->get('/:foo'=>{foo=>'bar'}=>sub($c){…});我的$route=$r->get('/:foo'=>[foo=>qr/\w+/]=>sub($c){…});my$route=$r->get('/:foo'=>(agent=>qr/Firefox/)=>sub($c){…});

生成Mojolicious::路由::路由仅对象匹配GET(获取)请求,采用与相同的参数“任何”(除了要匹配的HTTP方法,这是隐含的)。请参见Mojolicuis::指南::教程Mojolicious::辅助线::路由了解更多信息。

#带目的地的路线$r->get('/user')->to('user#show');

has_custom_name(有客户名称)

我的$bool=$r->has_custom_name;

检查此路由是否具有自定义名称。

具有网络套接字(_W)

我的$bool=$r->有网络套接字;

检查此路由是否具有WebSocket祖先并缓存结果以供将来检查。

是端点(_E)

我的$bool=$r->is_endpoint;

检查此路由是否符合端点条件。

已恢复

我的$bool=$r->已恢复(“控制器”);

检查字符串是否为保留的存储值。

is_websocket

我的$bool=$r->iswebsocket;

检查此路由是否为WebSocket。

方法

我的$methods=$r->方法;$r=$r->方法(“GET”);$r=$r->方法(“GET”、“POST”);$r=$r->方法(['GET','POST']);

限制此路由允许处理的HTTP方法,默认为无限制。

#有两种方法和目的地的路线$r->any('/foo')->方法('GET','POST')->to('foo#bar');

名称

我的$名称=$r->名称;$r=$r->名称('foo');

此路线的名称默认为基于路线模式自动生成的名称。请注意,名称现在的保留用于引用当前路由。

#带有目的地和自定义名称的路由$r->get('/user')->to('user#show')->name('show_user');

选项

我的$route=$r->选项;my$route=$r->选项('/:foo');my$route=$r->选项('/:foo'=>sub($c){…});my$route=$r->选项('/:foo'=>sub($c){…}=>'name');我的$route=$r->选项('/:foo'=>{foo=>'bar'}=>sub($c){…});我的$route=$r->选项('/:foo'=>[foo=>qr/\w+/]=>sub($c){…});my$route=$r->选项('/:foo'=>(agent=>qr/Firefox/)=>sub($c){…});

生成Mojolicious::路由::路由仅对象匹配选项请求,采用与相同的参数“任何”(除了要匹配的HTTP方法,这是隐含的)。请参见Mojolicuis::指南::教程Mojolicious::辅助线::路由了解更多信息。

#带目的地的路线$r->选项(“/user”)->to(“user#overview”);

解析

$r=$r->parse('/user/:id');$r=$r->parse('/user/:id',id=>qr/\d+/);$r=$r->parse(格式=>['json','yaml']);

分析模式。

补丁

我的$route=$r->补丁;my$route=$r->补丁('/:foo');my$route=$r->patch('/:foo'=>sub($c){…});my$route=$r->patch('/:foo'=>sub($c){…}=>'name');我的$route=$r->patch('/:foo'=>{foo=>'bar'}=>sub($c){…});我的$route=$r->patch('/:foo'=>[foo=>qr/\w+/]=>sub($c){…});my$route=$r->patch('/:foo'=>(agent=>qr/Firefox/)=>sub($c){…});

生成Mojolicous::路线::路线仅对象匹配补丁请求,采用与相同的参数“任何”(除了要匹配的HTTP方法,这些方法是隐含的)。请参见Mojolicuis::指南::教程Mojolicious::辅助线::路由了解更多信息。

#带目的地的路线$r->patch('/user')->to('user#update');

邮递

我的$route=$r->帖子;我的$route=$r->post('/:foo');我的$route=$r->post('/:foo'=>sub($c){…});my$route=$r->post('/:foo'=>sub($c){…}=>'name');我的$route=$r->post('/:foo'=>{foo=>'bar'}=>sub($c){…});我的$route=$r->post('/:foo'=>[foo=>qr/\w+/]=>sub($c){…});my$route=$r->post('/:foo'=>(agent=>qr/Firefox/)=>sub($c){…});

生成Mojolicious::路由::路由仅对象匹配邮政请求,采用与相同的参数“任何”(除了要匹配的HTTP方法,这是隐含的)。请参见Mojolicuis::指南::教程Mojolicious::辅助线::路由了解更多信息。

#带目的地的路线$r->post('/user')->to('user#create');

我的$route=$r->put;我的$route=$r->put('/:foo');my$route=$r->put('/:foo'=>sub($c){…});my$route=$r->put('/:foo'=>sub($c){…}=>'name');我的$route=$r->put('/:foo'=>{foo=>'bar'}=>sub($c){…});我的$route=$r->put('/:foo'=>[foo=>qr/\w+/]=>sub($c){…});my$route=$r->put('/:foo'=>(agent=>qr/Firefox/)=>sub($c){…});

生成Mojolicious::路由::路由仅对象匹配PUT(输出)请求,采用与相同的参数“任何”(除了要匹配的HTTP方法,这是隐含的)。请参见Mojolicuis::指南::教程Mojolicious::辅助线::路由了解更多信息。

#带目的地的路线$r->put('/user')->to('user#replace');

去除

$r=$r->删除;

从父级删除路由。

#完全删除路由$r->查找('fo')->删除;#将路由重新附加到新的父级$r->any('/foo')->add_child($r->find('bar')->remove);

提供

my$path=$r->render({foo=>'bar'});

将带有参数的路由渲染到路径中。

my$root=$r->root;

这个Mojolicious::路线对象是此路由的后代。

需要

我的$要求=$r->要求;$r=$r->需要(foo=>1);$r=$r->需要(foo=>1,bar=>{baz=>'yada'});$r=$r->需要([foo=>1,bar=>{baz=>'yada'}]);

激活此路线的条件。请注意,这会自动禁用路由缓存,因为条件太复杂,无法进行缓存。

#有条件和目的地的路线$r->get('/foo')->需要(host=>qr/mojolicious\.org/)->to('foo#bar');

建议的方法

我的$方法=$r->建议的方法;

建议使用HTTP方法到达此路由,GET(获取)邮政首选。

my$defaults=$r->to;$r=$r->到(action=>'foo');$r=$r->到({action=>'foo'});$r=$r->到(“控制器#action”);$r=$r->到(“控制器#action”,foo=>“bar”);$r=$r->到(“控制器#action”,{foo=>“bar”});$r=$r->to(Mojolicios->new);$r=$r->to(Mojolicios->new,foo=>'bar');$r=$r->to(Mojolicios->new,{foo=>'bar'});$r=$r->到(“我的应用程序”);$r=$r->到('MyApp',foo=>'bar');$r=$r->到('MyApp',{foo=>'bar'});

设置此路由的默认参数。

到字符串(_S)

我的$str=$r->to_string;

对整个路线进行严格化。

在下面

我的$route=(sub($c){…})下的$r->;我的$route=$r->under('/:foo'=>sub($c){…});我的$route=$r->under('/:foo'=>{foo=>'bar'});my$route=$r->在('/:foo'=>[foo=>qr/\w+/])下;my$route=$r->在('/:foo'=>(agent=>qr/Firefox/))下;我的$route=$r->under([format=>['json','yaml']]);

生成Mojolicous::路线::路线具有自己的中间目的地的嵌套路由的对象,采用与相同的参数“任何”(除了要匹配的HTTP方法,这些方法不可用)。请参见Mojolicuis::指南::教程Mojolicious::辅助线::路由了解更多信息。

#较长版本$r->any('/:foo'=>sub($c){…})->inline(1);#两条路由之间共享的中间目的地和前缀我的$auth=$r->under('/user')->to('user#auth');$auth->get('/show')->to('#show');$auth->post('/create')->to('#create');

网络套接字

我的$route=$r->websocket;我的$route=$r->websocket('/:foo');我的$route=$r->websocket('/:foo'=>sub($c){…});my$route=$r->websocket(“/:foo”=>sub($c){…}=>“name”);我的$route=$r->websocket('/:foo'=>{foo=>'bar'}=>sub($c){…});我的$route=$r->websocket('/:foo'=>[foo=>qr/\w+/]=>sub($c){…});my$route=$r->websocket('/:foo'=>(agent=>qr/Firefox/)=>sub($c){…});

生成Mojolicious::路由::路由对象只匹配WebSocket握手,采用与相同的参数“任何”(除了要匹配的HTTP方法,这是隐含的)。请参见Mojolicuis::指南::教程Mojolicious::辅助线::路由了解更多信息。

#带目的地的路线$r->websocket(“/echo”)->to(“示例#echo”);

捷径

除了“属性”“方法”您还可以调用提供的快捷方式“root”Mojolicious::路由::路由物体。

#添加“firefox”快捷方式$r->root->add_shortcut(firefox=>sub($r,$path){$r->get($path,agent=>qr/Firefox/);});#使用“firefox”快捷方式生成路由$r->firefox('/welcome')->to('firefox#welcome'');$r->firefox('/bye')->to('firefox#bye');

另请参阅

Mojolicious公司,Mojolicious::指南,https://mojolicious.org.