はじめに
REST(Representational State Transfer)は、HTTPを介した包括的な方法でデータを扱うことを可能とする、強力で軽量なアーキテクチャです。しかし、強力であるとはいえ、独自のコードにRESTを取り入れるのは少々手間がかかるため、何らかの支援が必要になります。Javaでのコーディングの場合は、Jerseyが助けになります。Jerseyは、JavaコードをREST対応にするために必要な作業を簡素化するオープンソースプロジェクトです。
この記事では、RESTを簡単に紹介し、Jerseyの背景にある基本的な動作概念を説明します。次に、Jerseyを使用して、実際のJavaコードをRESTfulにする方法を示します。最後に、ブラウザベースのJavaScript、AJAX、およびJSONを使用して、作成したRESTfulコードにアクセスする方法を示します。関連トピックとして、Base64でエンコードされた画像ファイルを、Webページ上に実行時に表示する方法を紹介します。
この記事で使用するコードはすべてページ上部からダウンロード可能で、自由に試してみることができます。
プロジェクトコードについて
まず、この記事のために用意したデモプロジェクトを使用して、基本的なJerseyアプリケーションを作成する方法を説明します。このデモプロジェクトの名前は「CardDealer」です。CardDealerは、サーバ側のトランプの束からランダムに1枚のカードを取り出すWebアプリケーションです。図1に示すように、プロジェクトのメインWebページ上の[Get Card]ボタンをクリックして、ランダムに1枚のカードを表示します。
この処理は簡単に見えるかもしれませんが、その背景には多くの技術が関与しています。JerseyとAJAXが、この処理における重要な役割を担っています。
前提知識
この記事の目的は、読者にできるだけ早くRESTを使用できるようになってもらうことです。プロジェクトを構成するさまざまなJavaモジュールの整理と構築には、Maven Frameworkを使用しました。また、CardDealerプロジェクトに含まれるJavaヘルパークラスのプロパティ値の実行時インジェクションには、Springを使用しました。そして上述のとおり、クライアント側のブラウザとサーバ側のCardDealer RESTコードの間の通信には、AJAXを使用しています。
従って、この記事の内容を完全に理解するためには、以下の技術についての基礎知識が必要になります。
- Maven:プロジェクトの依存性定義、サンプルプロジェクトの構築、ユニットテストの実行に使用
- Spring:プロパティ値の実行時インジェクションに使用
- AJAX:XmlHttpRequestをWebサーバに返すために使用
- JSON:クライアント側のJavaScriptオブジェクトに情報をカプセル化するために使用
これらの技術に関する知識が足りないと感じている読者も心配することはありません。詳細がわからなくても、概念的なレベルで有効な情報も多く含まれているので、まずはひととおり読んでみてください。