Play Framework の 簡単サンプルAPI
Play Framework でただ JSON を1つ返すだけの簡単な API サンプルを作ってみます。
1. プロジェクト作成からサーバ立ち上げまで
2. routes 編集
3. モデル作成
4. コントローラ作成
1. プロジェクト作成からサーバ立ち上げ
$ play new sample
sample はプロジェクト名のつもりです。
実行するともう一度名前入力を求められるので
もう一度 名前入れるか 空欄のままで Enter
すると、Java か Scala か聞かれるので僕は Java を選択
次に
$ cd sample $ play
ディレクトリを作成したプログラムに移動し
play コマンドを実行で play コンソールが使えます。
ちなみに play コンソールで
eclipse
と打つとeclipse のプロジェクトに変換してくれます。
そして
run
でサーバが立ち上がります。
必要なライブラリもダウンロードされます。
2. routes 編集
conf/routes に下記を追加します。
GET /team controllers.Application.get()
見たまんまですが、
/team というパスに GET リクエストを送ると controllers.Application クラスの
get()メソッドが動きますっていう意味です。
3. モデル作成
すごい簡単に作ります。
package models; import java.util.List; import com.fasterxml.jackson.annotation.JsonProperty; public class Team { public Team(){} public Team(int id, String teamName, List<Member> members) { this.id = id; this.teamName = teamName; this.members = members; } public int id; @JsonProperty("team_name") public String teamName; public List<Member> members; public static class Member { public Member(){} public Member(String memberName, int age) { this.memberName = memberName; this.age = age; } @JsonProperty("member_name") public String memberName; public int age; } }
@JsonProperty アノテーションは JSON で扱う名前を指定します。
@JsonProperty("team_name") public String teamName;
これで Java の teamName を JSON では team_name としてくれます。
4. コントローラー作成
package controllers; import java.util.ArrayList; import java.util.List; import models.Team; import models.Team.Member; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; import views.html.index; public class Application extends Controller { public static Result index() { return ok(index.render("Your new application is ready.")); } public static Result get() { List<Member> members = new ArrayList<Member>(); members.add(new Member("たけし", 24)); members.add(new Member("さやか", 23)); members.add(new Member("けんじ", 25)); Team team = new Team(1, "Aチーム", members); return ok(Json.toJson(team)); } }
index() はデフォルトであったものです。
僕は get() を足しました。
モデルの Team クラス をインスタンス化して JSON に変換してレスポンスを返します。
Json.toJson(team)
これだけで JSON に変換して Content-Type を application/json;
にしてくれてます。
ok() はステータスを 200 OK にしてレスポンスします。
以上、簡単なサンプルでした。
あと、API を試したいときにはクロームのアプリの
Dev HTTP Client とか Postman とかAdvanced Rest Client とかが使えます。
どれも簡単です。
ちなみに結果はこんな感じです。
{ "id": 1, "members": [ { "age": 24, "member_name": "たけし" }, { "age": 23, "member_name": "さやか" }, { "age": 25, "member_name": "けんじ" } ], "team_name": "Aチーム" }
インデントは Postman がつけてくれただけだと思います。