Play frameworkを使ってみた ②
前記事:Play frameworkを使ってみた ① - 8t's BBR
前記事に続き、今回はPlayフレームワークでのアプリケーションの開発に最低限必要な部分をまとめたいと思います。
基本的には公式のDocumentationに沿って翻訳しただけになります。
あくまで最低限の部分のみを説明するので、他の実装方法などより詳しい情報は公式を確認してください。
[公式ドキュメント] Home - 2.5.x
[日本語版(但し2.4まで)] Home - 2.4.x
Action
まず、Actionについての説明から。
ざっくり言うと「Play アプリケーションが受け取ったリクエストを処理し、クライアントへ送るレスポンスを生成する Java のメソッド」です。
以下はその一番簡単な例です。
public Result index() { return ok("Got request " + request() + "!"); }
Result
:クライアントへ送るレスポンス。play.mvc.Result
型。ok()
:HTTPステータスコード200(OK)のレスポンスを返す。request()
:受け取ったリクエストを呼び出す
以上のことから、このJavaメソッドは「受け取ったリクエスト内容をステータスコード200でレスポンスしている」ことがわかると思います。
この3点が基本です。
Controller
ではここで、
「ActionとかいうJavaメソッドはわかったけど、どのクラスに書けばええねん。なんでもええんか?」
という疑問が出てきます。答えはNOです。
名前は自由ですが、play.mvc.Controller
型を継承しているクラスでないといけません。
でも逆に言えばこれだけです。
package controllers; import play.*; import play.mvc.*; public class SimpleApplication extends Controller { public Result index() { return ok("It works!"); } }
言ってしまえば、これだけでアプリケーションの動作の記述はほぼ完成してしまいます。
まぁこのままでは、何のロジックも持たず、ただ「It works!」としか言わないクソみたいなアプリケーションですが(笑)
HTTPルーティング
先ほどクソみたいなアプリケーションを作りましたが、次は「どうリクエストしたら「It works!」って言うねん」ってなりますね。
これはconf/routes
に書いていきましょう。
GET / controllers.SimpleApplication.index()
はい、これだけです。
先頭から順に
- HTTPメソッド
- URL
- アクション呼び出し先
になります。
HTTPメソッド
これは言うまでもないかもしれませんが、
GET、PATCH、POST、PUT、DELETE、HEAD
です。お好きなものを指定できます。
URL
URLの指定方法はいくつかあります。
静的
リクエストを例えばGET
で/clients/all
に完全一致させたいときは、次のように定義できます。
GET /clients/all controllers.Clients.list()
これが基本ですかね。
動的
リクエストの際に、URL からパラメータ(例えば、クライアント ID) を取得するような場合には、動的パートを追加する必要があります。
GET /clients/:id controllers.Clients.show(id: Long)
渡したいパラメータ部分の前に:
をつける感じですね。
また、呼び出し先にも引数を指定しますが、例のようにパラメータ名: 型
という記述の仕方であることに注意してください。
その他
複数の/
をまたぐ動的パートや、動的パートで独自の正規表現を使うなど
他にもありますが、その辺は公式ドキュメントを参考にしてください。
https://www.playframework.com/documentation/ja/2.4.x/JavaRouting
これらだけでは、今時のWEBアプリケーションとまでは全然いきません。
ですが、最低限これだけ押さえておけばとりあえずPlayでアプリケーションを作れます。
次回は、「playでデータベースを使うには」でいきたい。