Mojolicious メモ 2: CGIのルーティング

| | トラックバック(0)

カテゴリ:

Mojoliciousのコードをとりあえず書いて動かしたいと思って、どっかからコピペしてきて動かそうとするじゃないですか。

で、ここ↑から持ってきました。

use Mojolicious::Lite;
use utf8;

# GETメソッドで「/hello」にアクセスしたときに行う処理を書く
get '/hello' => sub {
   my $self = shift;

   # パラメータ取得
   my $name = $self->param('name');

   # テンプレートに使う変数をセット
   $self->stash('name' => $name);

   # 描画
   $self->render();
} => 'index';

# アプリ起動
app->start;

# 以下テンプレート(Mojo::Template)
__DATA__

@@ index.html.ep
<html>
<head>
<title>Hello, <%= $name %></title>
</head>
<body>
こんにちは、<%= $name %>さん
</body>
</html>

で、そこらのドキュメントには、CGIで動かすには拡張子を .cgi にすればいいですよ、って書いてある。それに従って .cgi に拡張子を変更して、ブラウザでアクセスする。そうするとエラーになって動かない。

いままでの自分はそこで挫折してMojoliciousを使うのを諦めてました。

でも、ほんのちょっと書き換えるだけでよかったのです。

use Mojolicious::Lite;
use utf8;

# GETメソッドで「/hello」にアクセスしたときに行う処理を書く
get '/' => sub {
   my $self = shift;

   # パラメータ取得
   my $name = $self->param('name');

   # テンプレートに使う変数をセット
   $self->stash('name' => $name);

   # 描画
   $self->render();
} => 'index';

# アプリ起動
app->start;

# 以下テンプレート(Mojo::Template)
__DATA__

@@ index.html.ep
<html>
<head>
<title>Hello, <%= $name %></title>
</head>
<body>
こんにちは、<%= $name %>さん
</body>
</html>

どこが変わったかわかりますか?

get '/' => sub {

ここの部分です。 helloという文字がなくなりました。

これだけで、このcgiはアクセスできるようになります。

で、こっから先なんですが、 http://www.example.com/hello とか、 http://www.example.com/hoge とかやってアクセスに応じて、 挙動を振り分けたいじゃないですか。

で、

# app.cgi
get '/' => sub {
   my $self = shift;

   # パラメータ取得
   my $name = $self->param('name');

   # テンプレートに使う変数をセット
   $self->stash('name' => $name);

   # 描画
   $self->render();
} => 'index';

# /hello
get '/hello' => sub {
   my $self = shift;

   # パラメータ取得
   my $name = $self->param('name');

   # テンプレートに使う変数をセット
   $self->stash('name' => $name);

   # 描画
   $self->render();
} => 'index';

とやって、helloの部分をまるまる増やして、さあどうやって、この get 'hello' にアクセスしようかってことなんです。

結論は、こうなります。

http://www.example.com/myapp.cgi/hello

これで、hello で書いた関数の挙動にアクセスできるようになります。

わかっちゃえばなんてことないんですけど、でも、.cgiと拡張子が付いたあとにスラッシュをつけるっていう斬新な発想は普通うかばねーよと思うんですが。

とまあ、CGIでもこんなかんじでアプリケーションのルーティングができますというお話

comments powered by Disqus

トラックバック(0)

このブログ記事を参照しているブログ一覧: Mojolicious メモ 2: CGIのルーティング

このブログ記事に対するトラックバックURL: http://nozawashinichi.sakura.ne.jp/MT-4.25/mt-tb.cgi/1200

comments powered by Disqus

このブログ記事について

このページは、Shinichi Nozawaが2014年4月 2日 22:03に書いたブログ記事です。

ひとつ前のブログ記事は「Mojolicious メモ 1 ログの吐き方」です。

次のブログ記事は「Thunderbirdが時々固まる」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。