Mojolicious路由(十四)
一、快捷方式
为了让路由生成更有表现力,我们也可以在Mojolicious::Routes中添加自己的快捷方式add_shortcut。
# Simple "resource" shortcut
$r->add_shortcut(resource => sub ($r, $name) {
# Prefix for resource
my $resource = $r->any("/$name")->to("$name#");
# Render a list of resources
$resource->get('/')->to('#index')->name($name);
# Render a form to create a new resource (submitted to "store")
$resource->get('/create')->to('#create')->name("create_$name");
# Store newly created resource (submitted by "create")
$resource->post->to('#store')->name("store_$name");
# Render a specific resource
$resource->get('/:id')->to('#show')->name("show_$name");
# Render a form to edit a resource (submitted to "update")
$resource->get('/:id/edit')->to('#edit')->name("edit_$name");
# Store updated resource (submitted by "edit")
$resource->put('/:id')->to('#update')->name("update_$name");
# Remove a resource
$resource->delete('/:id')->to('#remove')->name("remove_$name");
return $resource;
});
# GET /users -> {controller => 'users', action => 'index'}
# GET /users/create -> {controller => 'users', action => 'create'}
# POST /users -> {controller => 'users', action => 'store'}
# GET /users/23 -> {controller => 'users', action => 'show', id => 23}
# GET /users/23/edit -> {controller => 'users', action => 'edit', id => 23}
# PUT /users/23 -> {controller => 'users', action => 'update', id => 23}
# DELETE /users/23 -> {controller => 'users', action => 'remove', id => 23}
$r->resource('users');