Play frameworkのrouting設定

このエントリはPlay frameworkひとりアドベントカレンダーの4日目です。

今日はroutingの設定をしてみます。

routing?

HTTP Method(GET/POST/...)URL(/hoge/fuga)Controller(Javaのmethod) の紐付け設定のこと。

Play frameworkでは、 /conf/routes ファイルに設定を書きます。

そう。 設定ファイルを書きます。 諦めてください。わかりやすいから大丈夫。こわくないよ。

所定のファイルに METHOD URL Controller って書くだけ。
:userID みたいな感じでパラメーターも使えて、それをControllerのメソッド引数に指定できます。

  • GET / にアクセスがきたら controllers.Application.index() を呼び出す
  • GET /twowa/ にアクセスがきたら controllers.Application.getTwowa() を呼び出す
  • POST /twowa/ にアクセスがきたら controllers.Application.postTwowa() を呼び出す
  • GET /twowa/:userId にアクセスがきたら controllers.Application.getTwowa(Long userId) を呼び出す
  • GET /images/* にアクセスがきたら、 /public/images/ のファイルを返す
  • GET /css/* にアクセスがきたら、 /public/css/ のファイルを返す
  • GET /js/* にアクセスがきたら、 /public/js/ のファイルを返す
  • というか、routesにマッチしてなかったら /public/* のファイルを返す

この設定だとこんな感じ。

設定テンプレにもともと書いてありますが、 Higher priority routes first なのでご注意を。

GET     /                    controllers.Application.index()
GET     /twowa/:userId       controllers.Application.getTwowa(userId:Long)
GET     /twowa/              controllers.Application.getTwowa()
POST    /twowa/              controllers.Application.postTwowa()
GET     /*file               controllers.Assets.at(path="/public", file)

このままだとうまく play run できないので、試す場合はfileのやつだけ試してみましょう。
GET /*file〜 以外 の行を#でコメントアウトして play run してください。
んで、ブラウザで http://localhost:9000/javascripts/jquery-1.7.1.min.js にアクセスしてみましょう。

エラーにならず、何がしかテキストが表示されれば成功です!

jqueryとかcssとかバンバンいれてください。


See also