ブロックチェーン・AI・システム開発の株式会社INDETAIL

JAX-RS(Jersey)を使って RESTful API を実装してみよう【応用編】

2017.03.09
suzy

はじめに

Java

前回のブログでは Jersey のサンプルコードを使って、 JAX-RS の仕様に則った RESTful API を実行・解説しました。指定URL にアクセスすると "Got it!" という文字列を表示するだけのシンプルな API 仕様でしたね。

今回は応用編。サンプルコードを編集して、リソースを操作(作成/更新/削除)する API を実装します。

余談:REST における「リソース」とは?

いきなり「リソース」というキーワードが出てきましたが、これは REST の概念として非常に重要な考え方になります。

REST では Web上の全てのコンテンツを「リソース」として考えます。以下の記事が詳しいので、参考にしてみてください。

Qiita - リソース指向アーキテクチャ(ROA)とは何なのか
http://qiita.com/NagaokaKenichi/items/0f3a55e422d5cc9f1b9c

サンプルコードの API を編集してみよう

前回実行した API を、以下の仕様に変更してみます。

概要
ある書店の在庫管理システムで使うための API。
書籍の情報をリソースとして扱う。

書籍が持つ情報
・ID
・タイトル
・在庫数

仕様
ID を指定すると、該当する書籍の情報を JSON で返却する

URL
@GET http://localhost:8080/books?id=[書籍のID]

step1:事前準備

事前準備として、データベースの代わりに動作するモッククラスを作成します。
モッククラスについては、昨年7月に札幌で開催された JAX-RS ハンズオンのソースコードを参考にさせていただきました。

ソースコード:
https://github.com/gishi-yama/javado06/blob/master/doc/10.md

今回は以下のデータを用意しています。(どちらの書籍も弊社にて読書会をしました!)

step2:コンパイラのバージョンを1.8に変更

サンプルコードは Maven を使ってコンパイルしています。
先ほどのモッククラスで、ラムダ式など JDK1.8 の追加機能を使っているので、サンプルコードの pom.xml を変更して、JDK1.8 ベースでコンパイルするよう修正します。

step3:API を編集する

パスの変更
MyResource.java のクラス宣言の上にある @Path アノテーションを変更します。

@Path アノテーションはメソッド単位にも設定可能です。その場合、API ヘのアクセスパスは、クラスの PATH とメソッドの PATH を繋げたものになります。

パラメータの追加
メソッドの引数に @QueryParam アノテーションを指定すると、指定した名前でクエリパラメータを受け取ることができます。

パラメータの受け取り方は他にもあり、パスの一部をパラメータとして扱う @PathParam などがあります。

レスポンスを JSON に変更する
はじめに pom.xml を編集して、JSON データを扱えるようにします。30〜33行目のコメントアウトを解除してください。

次に、メソッドの上に定義していた @Produces アノテーションの引数を編集します。

API のロジックを変更
step1で作成したモッククラスを使って、指定した ID の書籍情報を返却するよう編集します。

Book クラス(書籍情報のPOJO)のインスタンスをそのまま返却していますが、プリミティブ型・リスト型・POJO などであれば、自動的に JSON に変換されます。

動作確認

前回と同じように、$ mvn clean test$ mvn exec:java のコマンドを実行後、以下URLにアクセスします。
http://localhost:8080/myapp/books?id=1

無事に、期待するデータがJSON形式で取得できました。

API を追加する

続いて、書籍情報を登録/編集/削除する API を追加してみましょう。
完成形は以下のコードです。こちらもハンズオンのソースコードを参考にしています。

API のパスは全て同じで、HTTPリクエストの形式によって処理内容が変わります。

追加した API の動作確認

今回は GET 以外の HTTP リクエストも投げたいので、手軽に動作確認できる Chrome 拡張「Postman」を使います。

例えば書籍情報の登録 API を実行する場合、以下のように設定して「Send」ボタンを押下すると、正常終了の場合は「Status:200 OK」が表示されます。

他にも登録した情報を参照したり、更新してみたり、色々と試してみてください。

まとめ

JAX-RS を使った RESTful API ブログの第二弾。今回はサンプルコードを編集して、書籍の情報を操作する API を実装しました。

この記事を通して、Java言語でもサクッと API を実装できるよ!ということが伝えられたら嬉しいです。

関連タグ:

suzy Kawasuji Marie

INDETAIL には珍しい文系出身。初心者向け Raspberry Pi ネタと、色々な開発 tips を書いています。最近のおすすめマンガは「恋は雨上がりのように」。心が洗われます。

コメントを残す

「いいね」ボタンを押すと、最新情報をすぐに確認できます。