Mojoliciousの便利なAPI
リクエストオブジェクト
リクエストオブジェクトはコントローラオブジェクトを通して取得することができます。
get '/' => sub { my $self = shift; my $req = $self->req; };
リクエストオブジェクトはMojo::Message::Requestです。Mojo::Message::RequestはMojo::Messageを継承しています。
リクエストオブジェクトの便利なAPIを紹介します。
params
paramsメソッドを使用すると、GETとPOSTで渡されたパラメータを保持するパラメータオブジェクトにアクセスすることができます。
my $params = $req->params;
query_params
query_paramsメソッドを使用すると、GETで渡されたパラメータを保持するパラメータオブジェクトにアクセスすることができます。
my $params = $req->query_params;
json
jsonメソッドを使うと、JSON形式で送信されたデータをPerlのデータ構造として取得できます。
my $data = $req->json;
is_secure
my $secure = $req->is_secure;
コネクションがセキュアかどうかを調べます。つまり「https://」で接続されているかどうかを調べます。
is_xhr
$xhr = $req->is_xhr;
「Check X-Requested-With」ヘッダに「XMLHttpRequest」と文字列が含まれているかどうかを調べます。つまりAJAXで通信されているかどうかを調べます。
パラメータオブジェクト
パラメータオブジェクトはGETやPOSTで渡されたパラメータを保持するオブジェクトです。これはMojo::Parametersオブジェクトです。
パラメータオブジェクトの便利なAPIを紹介します。
to_hash
to_hashメソッドを使うとパラメータをハッシュのリファレンスに変換することができます。
my $hash = $params->to_hash;
これはコントローラオブジェクトから次のように利用されることが多いと思います
get '/' => sub { my $self = shift; my $data = $self->req->params->to_hash; }
アプリケーションオブジェクト
アプリケーションオブジェクトはapp関数を使って取得することができます。
my $app = app;
アプリケーションオブジェクトはMojoliciousオブジェクトです。MojoliciousはMojoを継承しています。
アプリケーションオブジェクトの便利なAPIを紹介します。
home
ホームオブジェクトを取得するにはhomeメソッドを使用します。
my $home = $app->home;
ホームオブジェクトはMojo::Homeオブジェクトで、アプリケーションのホームディレクトリの情報を持ちます。
log
ログオブジェクトを取得するにはlogメソッドを使用します。
my $log = $app->log;
ログオブジェクトはMojo::Logオブジェクトです。
secrets
クッキーを暗号化するためのパスワードを設定するにはsecretsメソッドを使用します。
$app->secrets(['lkjiji!&F']);
クッキーを使用してセッション管理する場合は必ず設定しましょう。
start
アプリケーションをスタートさせるにはstartメソッドを使用します。
$app->start;
types
タイプオブジェクトを取得するにはtypesメソッドを使用します。
my $types = $app->types;
タイプオブジェクトはMojoX::Typesオブジェクトです。これはファイルの拡張子とコンテントタイプのマッピングを定義しているオブジェクトです。
defaults
スタッシュのデフォルト値を設定しておくにはdefaultsメソッドを使用します。
# Set $app->defaults({foo => 'bar'}); $app->defaults->{foo} = 'bar'; # Get my $foo = $app->defaults->{foo};
helper
ヘルパーメソッドを追加するにはhelperメソッドを使用します。
$app->helper( foo => sub { ... }, bar => sub { ... } );
helperメソッドで追加したヘルパーメソッドは、アプリケーションオブジェクト、コントローラオブジェクト、テンプレートの内部で利用することができます。
$app->foo;
$c->foo;
@@ index.html.ep % foo;
mode
アプリケーションのモードを取得・設定するにはmodeメソッドを使用します。
my $mode = $app->mode; $app->mode('production');
これは環境変数を使って行うこともできます。
export MOJO_MODE=production
Mojolicious::Liteでインポートされる関数
Mojolicious::Liteを読み込んだときにインポートされる関数です。(Mojolicious::Liteの詳細についてはMojolicious::Liteのドキュメントを参考にしてください。)
app
アプケーションオブジェクトを取得するにはapp関数を定義します。
my $app = app;
get
HTTPのGETメソッドでアクセスされるURLに対する処理を定義するにはget関数を使用します。。
get '/:foo' => sub {...};
post
HTTPのPOSTメソッドでアクセスされるURLに対する処理を定義するにはpost関数を使用します。
post '/:foo' => sub {...};
any
HTTPの任意のメソッドでアクセスされるURLに対する処理を定義するにはany関数を使用します。。また複数のHTTPメソッドを指定することも可能です。
any '/:foo' => sub {...}; any [qw/get post head put delete/] => '/:foo' => sub {...};
under
getやpostメソッドで定義した処理を実行する前に実行したい処理を定義するにはunder関数を使用します。これは認証などに利用することができます。
under sub {...};
websocket
WebSocketハンドシェイク(Webソケットへの接続)でアクセスされるURLに対する処理を定義するにはwebsocket関数を使用します。
websocket '/:foo' => sub {...};
plugin
プラグインを追加するにはplugin関数を使用します。
plugin 'JsonConfig';
デフォルトの名前空間はMojolicious::Pluginでこの配下にあるモジュール名を指定してプラグインを読み込むことができます。