JavaEEとは?RESTとは?みたいなレベルの筆者が勉強がてらやったみた内容です。せっかく作るなら興味のある内容にしようと思い、題材をポケモンにしてみました。
今回の開発環境は以下の通り。
項目 | 内容 |
---|---|
PC(OS) | Mac OS X El Capitan(10.11.3) |
統合開発環境(IDE) | NetBeans IDE 8.1 |
Java(JDK) | 1.7.0_25 |
DataBase | MySQL 5.7.11 |
今回のAPI開発について
使用したデータ
別途、こちらからローカルのデータベースに簡易なポケモン図鑑を作りました。図鑑番号順に、日本語名、英語名、ドイツ語名、フランス語名、韓国語名を持ったデータベースです。(使ったSQL等は割愛)
mysql> select * from pkmn_base;
+--------+--------------------+------------+------------+--------------+--------------------+---------------------+---------------------+
| number | jp_name | en_name | ge_name | fr_name | kr_name | created_datetime | updated_datetime |
+--------+--------------------+------------+------------+--------------+--------------------+---------------------+---------------------+
| 1 | フシギダネ | Bulbasaur | Bisasam | Bulbizarre | 이상해씨 | 2016-04-07 23:01:37 | 2016-04-07 23:01:37 |
| 2 | フシギソウ | Ivysaur | Bisaknosp | Herbizarre | 이상해풀 | 2016-04-07 23:01:37 | 2016-04-07 23:01:37 |
| 3 | フシギバナ | Venusaur | Bisaflor | Florizarre | 이상해꽃 | 2016-04-07 23:01:37 | 2016-04-07 23:01:37 |
| 4 | ヒトカゲ | Charmander | Glumanda | Salameche | 파이리 | 2016-04-07 23:01:37 | 2016-04-07 23:01:37 |
| 5 | リザード | Charmeleon | Glutexo | Reptincel | 리자드 | 2016-04-07 23:01:37 | 2016-04-07 23:01:37 |
| 6 | リザードン | Charizard | Glurak | Dracaufeu | 리자몽 | 2016-04-07 23:01:37 | 2016-04-07 23:01:37 |
| 7 | ゼニガメ | Squirtle | Schiggy | Carapuce | 꼬부기 | 2016-04-07 23:01:37 | 2016-04-07 23:01:37 |
| 8 | カメール | Wartortle | Schillok | Carabaffe | 어니부기 | 2016-04-07 23:01:37 | 2016-04-07 23:01:37 |
| 9 | カメックス | Blastoise | Turtok | Tortank | 거북왕 | 2016-04-07 23:01:37 | 2016-04-07 23:01:37 |
| 10 | キャタピー | Caterpie | Raupy | Chenipan | 캐터피 | 2016-04-07 23:01:37 | 2016-04-07 23:01:37 |
| 11 | トランセル | Metapod | Safcon | Chrysacier | 단데기 | 2016-04-07 23:01:37 | 2016-04-07 23:01:37 |
| 12 | バタフリー | Butterfree | Smettbo | Papilusion | 버터플 | 2016-04-07 23:01:37 | 2016-04-07 23:01:37 |
以下略
完成したAPIをブラウザで叩いた結果
JSON形式で返却するAPIにしたので(※JSONPではない)、以下のようにずらーっと並びます。ちなみに、執筆時点ではフシギダネからボルケニオンまで721種類います。
整形すると、こんな感じ。
[
{
"en_name": "Bulbasaur",
"fr_name": "Bulbizarre",
"ge_name": "Bisasam",
"jp_name": "フシギダネ",
"kr_name": "이상해씨",
"number": 1
},
{
"en_name": "Ivysaur",
"fr_name": "Herbizarre",
"ge_name": "Bisaknosp",
"jp_name": "フシギソウ",
"kr_name": "이상해풀",
"number": 2
},
{
"en_name": "Venusaur",
"fr_name": "Florizarre",
"ge_name": "Bisaflor",
"jp_name": "フシギバナ",
"kr_name": "이상해꽃",
"number": 3
},
早速開発してみる
プロジェクトの作成
今回はNetBeans上にプロジェクトを作っていきます。(ファイル -> 新規プロジェクト)
カテゴリ「Maven」から「Webアプリケーション」を選択します。(後々の拡張性を考えて、一応Mavenを採用しました)
今回のプロジェクトの名前は、「pkmnAPI」とし、その他のサーバやJavaEEのバージョンはデフォルトのままでいきます。
以下は既に完成されたAPIの状態なので、プロジェクトの作成直後の状態ではないのですが、概ねこのようなプロジェクトが生成されます。
(たぶん、プロジェクト作成直後はRESTful Webサービス、テスト・パッケージ、生成されたソースとかはないはず)
パッケージ/クラスの作成
プロジェクトの「ソース・パッケージ」を右クリックし、新規→Javaクラスを選択、「クラス名」と「パッケージ」を入力し、いくつかのパッケージとクラスを作成します。
今回作成したクラス群
パッケージ / クラス名 | 用途 |
---|---|
.pkmn.api PkmnBaseApi.java |
API本体のクラス。リクエストを受け取り、適切なLogicを呼び出し、値を返却する。 |
.pkmn.logic PkmnBaseLogic.java |
データの処理を行うクラス。APIからの呼び出しで、必要に応じてDAOを呼び出す。 |
.pkmn.dao PkmnBaseDao.java |
DB操作を行うクラス。Logicからの呼び出しでDBの値を取得・更新・削除する。 |
.pkmn.entity PkmnBaseEntity.java |
データ管理用のクラス。DBのレコードに対応している。 |
パッケージは以下の通り
というわけで-準備編-はここまで。次回は用意したクラス群にソースコードを書いて、APIを実装していきます。