APIサーバーを作ってみました。自分がつまずいたポイントを記述しておきます。Frameworkではactivator経由でインストールすることになっているので公式サイトからactivatorをダウンロードしインストールしておく。MariaDBの設定を記述する。APIサーバーなので返却値はJSONになります。DBの値からJSONにコンバートするまでの処理を記述することになります。}JSONの一階層をMapで返したい場合はtoMap、配列で返したい場合はtoListにする。今回はMapで返すのでtoMapにしている。DBのレコードのPK-IDをMapのキーとしてバリューをレコードデータにしている。以下のようなデータが返却される。メソッドに引数を渡すyear_numをメソッドの引数として受け取るように実装しています。この引数はルーティングの設定をすると受け取れるようになるのでコントローラー側では特にパースは不要です。scalaにreturnはありませんreturnはrubyのように省略できるというわけではなく、scalaに記法自体が存在しません。今回2テーブルをJOINせず、2回SELECTしています。1回目のSELECTの結果が0件だった場合、そこで処理をやめたいのですがreturnがありません。PlayのOkメソッドはそこで処理が終わるわけではないOK(hogehoge)でレスポンスを返すのがPlayフレームワークなのですが、別にOKがreturnの役目を担ってるわけではありません。一度目のSELECTの結果が0だったらOK(blankJSON)を実行し空のJSON配列を返却しても後続のっ処理は実行されます。済ませましたがcase文などもっとスマートな記法はあるようです。"やはり俺の青春ラブコメはまちがっている。}]idは数値、titleは文字列で、結果の型が混合になっています。この場合JsXXXXメソッド(JsNumberやJsString)でDBの値を変換しないとエラーがでます。controllers.AnimeV1.year(year_num)URLには正規表現が使える、今回引数には西暦を渡すようにしているので4桁の数値とした。すると4桁の数値以外は受け付けなくなる。カラムにNULLを許容している場合の対応カラムのsexとsequelはNULLを許容しているためNULLが返却されるとAnormがIntに変換しようとしてエラーになります。これを防ぐにはOptionをかぶせる必要があります。JsNumberはBigDecimalを引数にとるのでクラスを作成するようラップしています。JSONで返す場合はUNIXTIMEにするか、Stringにするかなどあると思いますが今回はStringで返します。java.util.Dateを加える必要があります。APIサーバー作るとマイテンプレートとして使えるし入門には最適だと思う慣れると本当に1時間でDB->JSONのRESTサーバーはバシバシ作れそう。DBライブラリのAnormが使いずらい。別のもあるらしいけど標準のライブラリ使いたいよね。Sinatraなどのスクリプト言語には負けるがJavaの資産を使いたい場合はPlay一択Activatorはいろいろjarライブラリを300Mぐらいひっぱってくるのはちょっと気持ち悪い。upLoginユーザーは見つかりませんでした。