Mojolicious初学(六)

一、Placeholder占位符

占位符placeholder是指在web应用的url中设置变量,换一种说法,就是将以前写在网址后面的?后的各种请求参数,直接写在url中。这种技术通常用于restful api中,感兴趣的读者可以自行百度restful api的概念。

下面直接看例子:

use Mojolicious::Lite -signatures;

# /foo/test
# /foo/test123
get '/foo/:bar' => sub ($c) {                              # :bar代表了placeholder的格式,即:变量名
  my $bar = $c->stash('bar');                              #这是获取placeholder值方法
  $c->render(text => "Our :bar placeholder matched $bar");
};

# /testsomething/foo
# /test123something/foo
get '/<:bar>something/foo' => sub ($c) {                   #尖括号的格式可以保证placeholder无需放在url末尾。
  my $bar = $c->param('bar');                              #这是获取值的方法。
  $c->render(text => "Our :bar placeholder matched $bar");
};

app->start;

二、Relaxed placeholders宽松的占位符

宽松占位符,类似于正则表达式[^/]+,会直接提取placeholder的值直到出现一个斜杠/。看例子:

use Mojolicious::Lite;

# /hello/test
# /hello/test.html
get '/hello/#you' => 'groovy';                 #注意格式,与上面不同#替换了:

app->start;
__DATA__

@@ groovy.html.ep
Your name is <%= $you %>.

三、Wildcard placeholders宽泛的占位符

这种占位符的特殊之处在于会将url后所有的字符串都作为值,包括了后续的.和/等。类似正则表达式的.+。

use Mojolicious::Lite;

# /hello/test
# /hello/test123
# /hello/test.123/test/123
get '/hello/*you' => 'groovy';

app->start;
__DATA__

@@ groovy.html.ep
Your name is <%= $you %>.

 

 

 

标签