Mojoliciousの便利なAPI

リクエストオブジェクト

リクエストオブジェクトはコントローラオブジェクトを通して取得することができます。

get '/' => sub {
  my $self = shift;
  my $req = $self->req;
};

リクエストオブジェクトはMojo::Message::Requestです。Mojo::Message::RequestMojo::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オブジェクトです。MojoliciousMojoを継承しています。

アプリケーションオブジェクトの便利な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でこの配下にあるモジュール名を指定してプラグインを読み込むことができます。

関連情報