Dancerを試してみた 1 の続き、まだまだ基本事項。
連休中は、山に籠もってPCが使えないのでとりあえずの内容を記述します。
HTTPリクエストのハンドリング
/locationA に対するGETメソッドに応答するアクションを定義しています。
get '/locationA' => sub { # hogehoge };
/locationB に対する全てのHTTPメソッドに応答するアクションを定義しています。
any '/locationB' => sub { # hogehoge };
/locationCに対するGETおよびPOSTメソッドに応答するアクションを定義しています。
any ['get', 'post'] '/locationC' => sub { # hogehoge };
テンプレート
Viewにテンプレートを使用します。
テンプレートには2種類あります。
- view アクションの内容(content)のレイアウトを規定
- layout ページ全体のレイアウトを規定
layoutとviewの包含関係は以下のような感じ
+-- layout -----------------------+ | | | +------ view ----------------+ | | | | | | | | | | +----------------------------+ | | | +---------------------------------+
下記は、viewおよびlayoutの例。
viewは/views、layoutは/views/layoutsに置きます。
# layoutにmain.tt、viewにmain.ttを使った例 get '/hello/:name' => sub { my $name = params->{'name'}; layout 'main'; template 'hello.tt', { name => $name }; };
viewの例、デフォルトでは<%と%>で囲まれた部分にパラメータが代入されます。
<!-- hello.tt --> Hello there, <% name %>!
layoutの例、<% content %>の部分にviewの内容が代入されます。
<!-- main.tt --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"> <head> <title>practiceA</title> <link rel="stylesheet" type="text/css" href="/css/style.css" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <h1>Hello</h1> <div id="content"> <p><% content %></p> </div> <div id="footer"> Powered by <a href="http://perldancer.org/">Dancer</a> </div> </body> </html>
ロギング
debug、warning、errorの三つの重要度が定義されています。
下記はログ出力だけするアクションの例。ログファイルにそれぞれdebug、warning、errorが記録されます。
get '/logging' => sub { debug "output debug log"; warning "output warning log"; error "output error log"; };
ログ出力の例。ログは/logs/*.logに出力されます。
Fri Apr 30 10:43:29 2010 [4076] (debug) output debug log in D:/Perl/site/lib/Dancer.pm l. 77 Fri Apr 30 10:43:29 2010 [4076] (warning) output warning log in D:/Perl/site/lib/Dancer.pm l. 126 Fri Apr 30 10:43:29 2010 [4076] (error) output error log in D:/Perl/site/lib/Dancer.pm l. 79
設定ファイルには下記のように記述します。
設定ファイルは/connfig.yml(グローバル設定)、もしくは/environments/*.yml(実行環境ごとの設定)です。*の中身は実行環境名が入ります。
logger: 'ファイル名' log: 'debug' # debug, warning, errorを記録 #log: 'warning' # warning, errorを記録 #log: 'error' # errorのみ記録
続く? 時間切れなので連休後に書きます。