Mojolicious::Liteでルーティングしてみる

@nqounetです。

第2回がハローワールドというなんだかおかしなことになっていますが、気にしたら負けです。

第3回のネタを掘り返していて気づいたのですが、これらのサンプルは、Mojolicious::Liteのドキュメントのコード部分を参考に作っていたものでした。

なので、順序もそれに倣っていきます。

というわけで、第3回はルーティングです。

ルーティング

ウェブサイトを作成するときは、例えばindex.html/で表示される場合、index.htmlと同じディレクトリにfoo.htmlが置いてあると、/foo.htmlにアクセスすればfoo.htmlが表示されます。

ウェブアプリでも同じようなことができます。

それを実現するのがルーティングです。

サンプルコード全体

Mojoliciousのバージョンは5.75で確認しています。

ファイル名はなんでも良いですが、ひとまずmyapp.plと考えてください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#!/usr/bin/env perl
use Mojolicious::Lite;

get '/' => sub {
    shift->render(text => q{Hello World!});
};

get '/foo' => sub {
    my $c = shift;
    $c->render(text => q{Foo!});
};

app->start;

Line 1 - 6

1
2
3
4
5
6
#!/usr/bin/env perl
use Mojolicious::Lite;

get '/' => sub {
    shift->render(text => q{Hello World!});
};

ここまではハローワールドと同じですね。

morbo myapp.plでサーバーを起動した場合、http://localhost:3000にアクセスすればHello World!と表示されます。

Line 8 - 11

1
2
3
4
get '/foo' => sub {
    my $c = shift;
    $c->render(text => q{Foo!});
};

getの定義がもうひとつ出てきました。

subの中身は、書き方は違いますが前回説明したとおり一旦変数に入れてあるだけで実質的には同じです。表示される文字列はわかりやすいように別の文字列を指定してあります。

getの最初の引数が'/foo'なので、この定義によってhttp://localhost:3000/fooにアクセスした時にsubの中身が実行されることになり、Foo!と表示されます。

定義を増やしても、URLごとに記述がわかれているので、例えばエラーが発生した時には、どのURLにアクセスしていたのかを調べれば、どの部分に問題があるのかが簡単にわかるようになります。

とても便利ですね。

Line 13

1
app->start;

もう説明は不要でしょう。

最後はこれで締めです。

Mojolicious 1.0

いつ頃書いたサンプルだったのかは覚えていないのですが、ブログを掘り返してみると、ほぼ4年前にMojoliciousを使って色々と作っていました。

先日1.0にバージョンアップしたMojolicious(::Lite)を本格的に触ってみようとアレコレやってみた。

引用元: Mojolicious::LiteでData::Modelを使ってみた | IT Office Nishimiyahara

Mojoliciousがバージョン1.0になったのは2010-12-26ですので、年末年始に結構頑張ってたみたいですね。

多機能だけど必要なところだけ使えばOK

ルーティングは、ウェブアプリを書く上でとても便利な仕組みということがわかりましたね。

ルーティングだけでも簡単なウェブアプリは書けてしまいます。

皆さんも美味しいところだけをうまく使ってサクッとウェブアプリを作ってみましょう。

2月28日(土)にPerl入学式の第6回としてウェブアプリを作成します。

大阪の講師は私が担当する予定です。

あなたの知らないPerlを一部お見せしますので、是非ご参加ください。

comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。