Playframework 2.0 小技-Controllerなしでリダイレクト
Playframework 2.0 RC版の登場
先日待望のPlayframework 2.0RC版がリリースされました。 RC2がここからダウンロード可能です。 βよりもだいぶ機能が追加され、大量のバグフィックスがされています。
Controllerなしでリダイレクトする
先日Playのメーリングリストをみていたらちょっと使えそうなネタのやりとりがされていたのでご紹介します。 特定のパス宛にリクエストがきたらリダイレクトしたいんだけど、Controllerつくらなくてもできないか?という質問。 これはroutesファイルの記述だけで解決できるみたいです。 では、やってみましょう。
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.2
- Playframework : HEAD
- Java : 1.6.0_26
- Eclipse : 3.7
注意: この記事ではgithubから取得したHEAD版を使用して試しています。 正式リリース前の状況のため思わぬ不具合が生じるかもしれませんので、ご了承ください。
ソースのHEADを取得してセットアップ
RC版がダウンロードできるようになりましたが、相変わらずHEADをビルドして使ってます。 多分どっちでも動くと思いますが、いつものようにソースからビルドする手順を。 まだgithubからソースを取得していない人は、play2.0のソースを取得してビルドしましょう。
$ git clone https://github.com/playframework/Play20.git $ cd Play20/framework $ ./build > complile > build-repository > publish-local
すでにソースを取得している人は、最新の状態に更新してビルドします。
$ git pull $ cd Play20/framework $ ./cleanEverything $ ./build > compile > build-repository > publish-local
これで準備ができました。
プロジェクト作成
Scalaベースのプロジェクトを作成し、sbtコンソールを起動します。
% play new redirect % cd redirect % play
eclipsifyを実行してeclipseプロジェクト化してインポートしてソースの修正をしましょう。
>[redirect] $ eclipsify
routes記述
/googleにリクエストがきたら、Googleへリダイレクトしましょう。次の1行をroutesに追記します。
GET /google controllers.Default.redirect(to = "http://www.google.com")
controllers.Defaultとは、あらかじめ用意されているControllerです。 このControllerのredirectメソッドを使用し、toパラメータにリダイレクト先を記述しています。 sbtから起動してlocalhost:9000/googleにアクセスしてみてください。Googleへリダイレクトされました。