Translate

2012年9月14日金曜日

その2 ルートについて

■ルートの指定
まずは、ヘルパースクリプトを使ってルートの確認
#!/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へ戻る

2012年9月13日木曜日

Mojolicious

■メモ。
その1 てっとり早く動かしてみる

その2 ルートについて


$self->app->log->debug()
$self->app->log->error()
$self->app->log->fatal()
$self->app->log->info()
$self->app->log->warn()

$self->app->render->paths

$self->helper() 

$self->req->param()

$self->res->code

$self->render() text,template

その1 てっとり早く動かしてみる

雰囲気を味わうためにヘルパースクリプトを実行してみます。
何も考えずに実行してみます。
$mojo generate lite_app hello.pl

以下のようなコードが生成されます。
#!/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 %>

これまた、何も考えずに以下を実行します
$morbo hello.pl

すると以下メッセージが表示されるので、localhostの3000ポートにアクセスしてみます。
[Wed Sep 12 23:45:49 2012] [info] Listening at "http://*:3000".
Server available at http://127.0.0.1:3000.

Welcome to the Mojolicious real-time web framework!
と表示されました。


ここまでの補足。
・ヘルパーコマンドについて
$mojo generate help
でmojo generateのコマンドの簡単な説明が表示されます

---------------------------------------------------------------------------
These generators are currently available:
app Generate Mojolicious application directory structure.
lite_app Generate Mojolicious::Lite application.
makefile Generate "Makefile.PL".
plugin Generate Mojolicious plugin directory structure.
---------------------------------------------------------------------------

Mojolicious::Liteのひな形を作りたかったので
$mojo generate lite_app アプリ名 としたわけですね。


・開発用webサーバ
$morbo アプリ名
で、開発用webサーバが起動します。
ファイルを書きなおしても再度立ち上げ直す必要はありません。
Ctrl + cで終了。


・use Mojolicious::Lite
use strict; use warings;が有効になる


・plugin 'PODRenderer'
ヘルパーコマンドのソースには、Mojoliciousのガイドページが閲覧できるようになっています。
http://localhost:3000/perldoc で見れます。

ひとまずここまで。
ルート、ビューについては後日メモ。

Mojolicious::Liteへ戻る