読者です 読者をやめる 読者になる 読者になる

8t's BBR

よくつまったあれこれをメモ

Play frameworkを使ってみた ②

web系

前記事: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でデータベースを使うには」でいきたい。