Mojoliciousの便利なAPI




  1. Perl




  2. Mojolicious


リクエストオブジェクト

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

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でこの配下にあるモジュール名を指定してプラグインを読み込むことができます。