まずは、ヘルパースクリプトを使ってルートの確認
#!/usr/bin/env perl use Mojolicious::Lite; # Documentation browser under "/perldoc" plugin 'PODRenderer'; get '/' => sub { my $self = shift; $self->render('index'); }; app->start; __DATA__ @@ index.html.ep % layout 'default'; % title 'Welcome'; Welcome to the Mojolicious real-time web framework! @@ layouts/default.html.ep<%= title %> <%= content %>
該当部分は、以下のコードですね
get '/' => sub{};
1.静的パス
get '/foo/bar/baz1' => sub {shift->render(text=>'/foo/bar/baz1'};
get '/foo/bar/baz2' => sub {shift->render(text=>'/foo/bar/baz2'};
get '/foo/bar/baz3' => sub {shift->render(text=>'/foo/bar/baz3'};
http://localhost:3000/foo/bar/baz1
http://localhost:3000/foo/bar/baz2
http://localhost:3000/foo/bar/baz3
それぞれにアクセスしたら
/foo/bar/baz1
/foo/bar/baz2
/foo/bar/baz3
と表示されます
2.動的パス
実際のところ、静的なパスより動的なパスの方が多いと思うので
一番最後のパスは動的に変わるとしたら…
get '/foo/bar/:baz' => sub{ my $self = shift; my $baz = $self->param('baz'); $self->render(text => '/foo/bar/' . $baz); };
:名前 は、ドットとスラッシュ以外の全てにマッチします。
そして、shift->param('名前')で値を取り出せます。
ただ、静的パスの例のようにbaz+数字にヒットさせたい場合
上記の方法では、それ以外のパターンもヒットするので困ります。
こういった場合、正規表現を指定することで解決できます。
get '/foo/bar/:baz' => [baz => qr/baz\d+/] => sub{ my $self = shift; my $baz = $self->param('baz'); #stashにも登録されている $self->stash('baz') $self->render(text => '/foo/bar/' . $baz); };
ルートの指定についてはいろいろあり紹介しきれないので
こちらを参照するとよいと思います。
Mojolicious::Lite
■パラメータの取得
get/postどちらもparamメソッドを使えば取得できます。
[getの場合]
shift->param("Query名");
[postの場合]
shift->param("Name属性名");
getの参考例
get '/get' => sub{ my $self = shift; my $date = $self->param("date"); $self->render_text("Date:" . $date); };http://localhost:3000/get?date=20121203
にアクセスすると
Date:20121203
と表示されます。
チェックボックスの値など複数の値が帰ってくる場合は
配列変数で受け取ればよいです。
また、引数を省略すると全てのパラメータ名が帰ってきます。
Mojolicious::Liteへ戻る