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 %>.