サンプルアプリケーションの概要
サンプルアプリケーションは図1に示すような簡単な住所録管理アプリケーションです。
![図1:サンプルアプリケーションのイメージ](http://cz-cdn.shoeisha.jp/static/images/article/11509/11509_001_s.png)
このアプリケーションでは、表1のAPIを提供します。
エンドポイント | HTTPメソッド | 概要 |
---|---|---|
/contact/add | POST | 新規に連絡先データを登録する |
/contact/list | GET | 登録してあるデータ一覧を取得する |
/contact/item/{id} | GET | 指定したidの連絡先データ情報を取得する |
/contact/item/{id} | POST | 指定したidの連絡先データ情報を更新する |
/contact/item/{id} | DELETE | 指定したidの連絡先データを削除する |
サンプルアプリケーションの実行方法
サンプルコードはSpring Bootのアプリケーション(sample/java以下)とHTMLやJavaScriptなどのWebリソース(sample/web以下)の2つに分かれています。
Webリソースは既にサーバ内にApacheなどの他のWebサーバが利用できるのであればそちらを利用するとよいでしょう。
HTML側はサンプルアプリケーションがあるサーバと同じ場所でなくても動作するようになっています。その場合には、アクセスできる場所に配置できれば、どのようなパスであっても問題ありません。
また、リスト1に記載されているAPIサーバへのアクセス先URLを変更してください。
window.api = "http://localhost:8081/contact";
利用できるWebサーバがない場合には、設定ファイルをリスト2のように変更することで、アプリケーション「Tomcat」を起動し、これを通じてアクセス可能です。
ただし、起動するポート番号を変更した場合には、前述したAPIサーバへのアクセス先URLも変更する必要があります。
app.web.prefix = /web app.web.resource = <sample/webのあるフォルダ> # 設定例 ( C:¥samples/web/ 以下にsample/web以下のHTMLソースを保存した時 ) # app.web.resource = file://C:/sample/web/ # tomcatを起動するポート server.port = 8081 # (以下、省略)
起動はリスト3のように行います。起動に成功したら、http://localhost:8081/web/index.htmlにアクセスしてください。
ただし、WebリソースはES6のコードを含んでいますので、最新のES6対応のブラウザ(ChromeやEdgeなど)を利用してください。
./gradlew bootRun ( MacやLinuxの場合 ) gradlew.bat bootRun ( Windowsの場合 )
[Note]Spring Bootを使ったサーバサイドHTMLアプリケーションについて
Spring BootでのJSPを使ったアプリケーションやHTMLテンプレートエンジンを使ったHTMLアプリケーションの開発も問題なく行えます。しかし、TomcatなどのWeb Application Server上で開発する方法に比べて実績やノウハウなどの情報は多くはありません。
また、Webサイトのように日々の編集運用が必要になるものをSpring Bootを用いて開発するメリットは筆者はあまり感じませんでした。
一方、Spring Bootが持つ他のサービスなどの自動設定機能を生かしたものとしては、筆者はマイクロサービスとして利用するAPIサーバなどが利用用途としてより適していると考えています。
そのため、サンプルアプリケーションもHTML側の実装について意図的に分離してあります。また、今回はHTML側の実装については趣旨からはずれるため説明は行いません。
サンプルコードのソースコード構造
サンプルアプリケーションがどのような動作をするのかがわかったところで、実際のソースコードの説明をしていきます。
ソースコードは図2に示すように大きくわけて4つのグループで構成されていますが、処理のメインなるAPI部分の実装は、ContactControllerのみとなっています。
しかしながら、処理のイメージがつかめないソースもいくつか存在しています。今回はソースコード全体にかかわる部分について紹介し、次回、個別の内容について紹介していきます。
![図2:サンプルアプリケーションのソースコード一覧](http://cz-cdn.shoeisha.jp/static/images/article/11509/11509_002.png)