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

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

2017.02.28
suzy

Java

はじめに

最近では、開発の現場で RESTful API を実装する機会が増えてきました。サーバー環境も含めてサクッと作りたい!という時には PHP・Node.js などが候補に上がりそうですが、実は Java でも簡単に作ることができます。

技術仕様としては、Java EE 6 から追加された「JAX-RS」という Java API 仕様を用います。JAX-RS は RESTful API の開発に特化しており、その実装として Jersey(リファレンス実装)や Apache CXF などがあります。

導入編では Jersey のサンプルコードの実行環境構築と、コードの簡単な説明をします。次回、サンプルコードを応用した RESTful API を実装してみます。

環境構築

Jersey のサンプルコード実行にあたって、公式サイトを参考に環境構築していきます。
https://jersey.java.net/documentation/latest/getting-started.html

前提条件:JDK(7以上)がインストール済であること

なお、環境構築の手順については、Mac端末を想定しています。

Maven のインストール

今回は Homebrew を使ってインストールします。
インストール可能なバージョンは $ brew search maven で確認できます。

$ brew install でインストールを実行します。

$ mvn --version で Maven のバージョンが表示されることを確認しましょう。

プロジェクト雛形作成

以下のコマンドでプロジェクトの雛形を生成します。

プロジェクトの雛形を利用することで、ディレクトリ構造や設定ファイルをゼロから作成する必要がなくなります。とても便利ですね。

コマンドを実行したディレクトリに、以下のプロジェクトが作成されました。

サンプルコードを実行する

先ほど作成した simple-service ディレクトリ直下に移動して、以下コマンドで、プロジェクトのコンパイルと単体テストを実行します。
$ mvn clean test

単体テストに合格したので、ここまでの環境構築は問題なさそうです。

次はサンプルコードを実行してみましょう。$ mvn exec:java を実行した後、ブラウザから以下の URL にアクセスします。
http://localhost:8080/myapp/myresource

画面に「Got it!」という文字列が表示されています。これが、サンプルコードの RESTful API のレスポンスです。

ここまで全くコードを見ずに進めてきましたが、一体どのような仕組みで動いているのでしょうか?

ちょこっとコード解説

それでは、今回実行したサンプルコードの中身を見てみましょう。

JAX-RS ではアノテーションの仕組みを利用することで、とてもシンプルに RESTful API を実装できます。今回使われているアノテーションをひとつずつ見ていきましょう。

@Path・・・メソッドへアクセスするパス(リクエストURLの一部※)を指定します
@GET・・・HTTPメソッドの種類を指定します。他に @POST @PUT 等があります
@Produces・・・レスポンスの Content-Type を指定します

※先ほど指定した URL の "myresource" より前の部分は、別のクラスで「ベースURL」として定義されています

これらのルール(JAX-RS の仕様)を覚えておくと、コードから API の仕様がすぐに理解できますね。このサンプルコードの場合は、以下の通りです。

1) ベースURL + "/myresource" の URL に GET リクエストが送られてきたら、
2) レスポンスとして "Got it!" というテキストデータを返却する

まとめ

今回は JAX-RS 導入編として、Jersey のサンプルコードを実行するところまで進めました。なんとなく「Java 言語で RESTful API」のイメージが伝わったでしょうか?

次回は応用編として、リソースを編集(作成/更新/削除)する API を実装してみます。

関連タグ:

suzy Kawasuji Marie

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