Playframework 2.0 小技-Controllerなしでリダイレクト

2012.02.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

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へリダイレクトされました。