[Spring] RESTful Web Serviceを構築

投稿者: | 2021年2月1日

Springには、RESTful Web Serviceを極めて簡単に実装する仕組みがあります。

HTTP GETリクエストを受けると、パラメータをJSON形式で返却するサービスの構築について説明します。

環境は、Windows 10 Home です。

やりたいこと

httpリクエストを送ると(ブラウザでURLにアドレスを入れると)、パラメータをJSON形式で表示します。

httpリクエストを送ると

パラメータを表示します。

環境構築

パッケージのダウンロード

今回はIDEを使用せず、スクラッチで構築してみます。

必要なライブラリが揃った状態とするため、Spring Initializr からパッケージをダウンロードします。

Dependencies に “Spring Web” を追加して、”GENERATE” ボタンを押します。

“demo” という名称のzipファイルができるので、それを適当な場所に解凍し配置します。

ここでは C:\demo としました。

クラスファイルの作成

Resourceクラスの作成

JSONを表現するResourceクラスを作成します。

フィールドは、”name” のみのシンプルなクラスです。

Controllerクラスの作成

次にControllerクラスを作成します。

リクエスト・パラメータに渡すことで、name は変更可能となっています。

パラメータが何も渡されなければ、デフォルトで “Taro” を格納します。

クラスファイルの配置

作成した2つのクラスファイルを、”demo”パッケージ下に配置します。

留意点 – java versionの確認

ここまで来たら実行するだけですが、留意点として、java version の確認が挙げられます。

パッケージ内のpom.xmlと、実行環境のjavaバージョンが合っていないと、起動時に失敗しますので、もし違っていたら合わせておきましょう。

実行環境のjava version

pom.xmlのjava version

両者のバージョンが合っていないと、起動時に”無効なターゲット・リリース”であるというエラーが発生します。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project demo: Fatal error compiling: 11は無効なターゲット・リリースです -> [Help 1]

動作確認

コマンドプロンプトでカレント・ディレクトリをdemoフォルダの場所に合わせ、mvnw spring-boot:run コマンドを実行します。

Springが起動したら、URLからリクエストしてみます。

おまけ – ネストしたJSONデータを作る

上記の例では、フラットなJSONデータを生成していましたが、ネストしたJSONデータを作りたい場合もあります。

JSONデータはJavaのResourceクラスに対応していますので、Javaのクラスも同様の構成にすればOKです。

例として、先ほどのケースに”Address”という項目を追加し、情報の階層構造を作りたいとします。

このような場合は、まず “address” 情報を格納する “Address” クラスを作り、そして “PersonInfo” クラスのフィールドとして “Address” クラスを追加します。

Springを起動し、URLを開くと、このような結果が得られます。