ふりぶろぐ
Web Engineer's Blog
Java

【入門】Play Framework(Java)でAPIを作ってみよう!【IntelliJ IDEA】

Play Framework

APIってどうやって作れば良いんだろう…

このような悩みにお答えします。

Play Frameworkを使って簡単なAPIを作成してみましょう!

環境
  • Java 8
  • Play Framework 2.5.9
  • IntellJ IDEA

こちらの記事で

APIを作ってみるのが良いと解説したのですが、今回は実際にAPIを作ってみましょう!

意外と簡単に作れてしまうので、軽い気持ちでやってみましょう!

準備:環境構築

Javaはインストールされている前提で進めていきます。

Javaがインストールできていない人は?

まだインストールできていない方はこちらを参考にしてください。
簡単ではありますが、解説しています。

IntellJからプロジェクトを生成してみよう!

上記の記事ではSBTを使ってプロジェクトを生成したのですが、今回はIntellJを使って生成してみたいと思います。

まずは起動して「Create New Project」をクリック!

その後、「Java」の部分の下の方に「Play 2.x」という項目が表示されていると思います。
もし、表示されていなければScalaのプラグインを導入することで表示されると思います。

create play

あとは名前を使えて生成するだけ!
私はplay-apiと名前をつけました。

生成には少し時間がかかります。

動作確認!

生成が完了したら起動してみましょう!

起動方法もこちらに記載されています。

実際に起動してみると、

value index is not a member of controllers.Application

というエラーが。

play error

このエラーを修正してみましょう!
修正方法は簡単でApplication.javaのstaticを削除するだけ。

package controllers;

import play.*;
import play.mvc.*;

import views.html.*;

public class Application extends Controller {

    public Result index() {
        return ok(index.render("Your new application is ready."));
    }

}

このように修正してもう一度起動してみると…

play first view

表示されました!

実際にAPIを作ってみよう!

では実際にAPIを作ってみましょう。

APIは非常に簡単で、コントローラからJSON形式のデータを返してあげるだけ。

すでに用意されているindexのコントローラを修正してみましょう。

 データを作成しよう!

まずは返却するデータを作成します。
本来であれば別ファイルに定義するほうが良いのですが、今回はわかりやすいようにコントローラ内に定義します。

このようなUserクラスを定義しました。

    class User {
        private Long userId;
        private String name;
        private int age;

        public User(Long userId, String name, int age) {
            this.userId = userId;
            this.name = name;
            this.age = age;
        }

        public Long getUserId() {
            return userId;
        }

        public String getName() {
            return name;
        }

        public int getAge() {
            return age;
        }
    }

次にこのインスタンスをコントローラで生成しましょう。

    public Result index() {
        User user = new User(1L, "りーふ", 24);
        return ok(index.render("Your new application is ready."));
    }

これでUserインスタンスを生成できました。
あとはAPIで返却するだけです。

APIで返却してみよう!

先ほど生成したUserインスタンスをJSON形式で返却します。

こちらも超簡単。

    public Result index() {
        User user = new User(1L, "りーふ", 24);
        return ok(Json.toJson(user));
    }

たったこれだけ!
Json.toJson()がオブジェクトをJSONに変換してくれます。

これでlocalhost:9000にアクセスしてみると…

result json

JSONが返却されました!
これでAPIの完成です。

Application.javaはこんな感じ!

最終的なApplication.javaはこんな感じです。
生成してからこのファイルしかいじってないので、これだけ載せておきます。

package controllers;

import play.*;
import play.libs.Json;
import play.mvc.*;

import views.html.*;

public class Application extends Controller {

    class User {
        private Long userId;

        private String name;

        private int age;

        public User(Long userId, String name, int age) {
            this.userId = userId;
            this.name = name;
            this.age = age;
        }

        public Long getUserId() {
            return userId;
        }

        public String getName() {
            return name;
        }

        public int getAge() {
            return age;
        }
    }

    public Result index() {
        User user = new User(1L, "りーふ", 24);
        return ok(Json.toJson(user));
    }

}

あとがき

たったこれだけで良いの?と思う方もいるかも知れませんが、APIはこれだけです。

あとは

  • データベースから取得したデータ
  • サーバー側で生成したデータ

を返却してあげたら、実際に使用されるAPIに近づきますね。

基本的に

  1. インスタンスを生成する
  2. JSONに変換する
  3. 返却する

という流れだけでAPIは作れます。

HTMLやCSSの知識が必要ないので簡単ですね。
まずは簡単なAPIを作ってみましょう!

ABOUT ME
りーふ
たまにブログを書いてるWebエンジニア。 サーバーサイドメインでインフラとフロントエンドもたまにやります。 Javaが得意。 Play Frameworkが好き。 本業は迷惑をかけない程度に手を抜くスタイル。 意識高い系は苦手。