Spring BootでWeb APIを0から学ぼう!(ブロジェクト設定からHello World)

spring restful
Spring restful サービスを、実際にプロジェクトを作成するところから記録していきます。 細かく記録してますので、新たにspring restfulを学ぼうとしている方には、きっと参考になると思います。 ところどころでエラーがでた場合も、それも含めて記録してあります。 新たにspring restfulを学ぼうとしている方の役に立てられたら幸いです。

Spring bootを使ってREST APIをしっかりを学びたいの

でもネットでは、いろいろ情報がたくさんあって頭がこんがるわ
基本からしっかりと学ばないとやっぱりね…

そんな方のために、0からSpring bootを使ってREST APIを作成する方法を学んでいきます。

はじめはプロジェクトを作成し、「Hello World」を表示するところまでやってみます。

順番にやっていけば大丈夫です。
一緒に学んでいきましょう!

 

 

 

開発環境は以下のようになっています。
OS: Mac
IDE: STS→ダウンロード先はこちら
Java: java8
spring boot: 2.1.3.RELEASE

とりあえず動くプロジェクトを作成する

File>New>Spring Starter Projectからプロジェクトを作成していきます。

次の画面でプロジェクト名を「spring-boot-restful」を設定します。
今回は「/Users/shinichi-ito/SpringApp/micro/spring-restful/」の配下にプロジェクトを作成します。
Javaのバージョンを「8」に設定します。
「Next」をクリック

次の画面で検索窓に「web」と入力して「Spring Web」にチェックいれます。
「Next」をクリックする

次の画面はそのままで「Finish」 をクリックする

そうすると下記の画像を見てもらうとわかりますが、STSの左画面「Package Explorer」に新たに「spring-boot-restful」プロジェクトが作成されるはずです。

そしてプロジェクト内に「pom.xml」というファイルがあるので開きます。
そしてspring bootのバージョンを変更します。


2.3.1.RELEASE→ 2.1.3.RELEASE

なぜ変更するかというと現時点で一番安定しているバージョンだからです。

 

 

バージョンを変更したらちゃんと(command+S)で保存しましょう。
そうしないと変更が反映されません。

とここで、なぜか私のケースでは、エラーが発生してしまいました。

うーん 何故かエラーが….


下記の画像を見ると、org.junit.jupiterにエラーが表示されています。
(参考;jupiter は JUnit5 のモジュールです)

下記の画像のように赤マークにカーソルを当てると「Add JUnit5 library to the build path 」が現れるのでクリックします。そうするとエラーは解除されるはずです。

それでもエラーが消えない場合は、プロジェクトを右クリック>Maven>Update Projectをクリックしてみてください。
これでエラーは消えるはずです。

訳のわからないエラーには泣かされますよね

Hello Worldを返すコントローラ作成

プロジェクトが作成できましたので、まずははじめに「Hello World」を表示させるところから始めましょう。

ではコントローラを作成します。

プロジェクトを右クリック>New>Classをクリックします。

「HelloWorldController」と入力します。

そして作成された「HelloWorldController」を編集していきます。
下記のようにコードを追加してみます。

 

とりあえず動かしてみましょう。
プロジェクトを右クリック>Run As>Spring Boot Appをクリックしていきます。

するとコンソールにいろいろと表示がされます。

そのなかに「Tomcat initialized with port(s): 8080 (http)」とありますので
http://localhost:8080/hello-world」にアクセスしてみます。

こんどは「http://localhost:8080/hello-world2」にアクセスしてみます。

ちゃんと表示されましたか?

コードの内容を詳しく解説

では「HelloWorldController」のコードを詳しくみてみます。

@RestControllerとは一体なにものでしょうか?


Spring boot+thymeleafでサービスを作成する際、主にコントローラーには@Controllerアノテーションを使用します。
返り値はStringにして、値を偏移するテンプレートを指定するケースが多いとおもいます。
例えばこんな感じですね

 

 

@RestControllerはどのようなものかというと、返り値がJsonやXMLなどを返すWeb api用のアノテーションになります。
今回はRestful Web サービスを作成するので@RestControllerを選択しています。

もしもクラスに@Controllerをつけた場合であっても、@ResponseBodyをつければ返り値がJsonやXMLなどを返します。下記の2つのコードは同じ値を返します。

 

次に@RequestMappingと@GetMappingですが、動き自体は全く同じになります。
書き方が二通りあるということです。

基本的な書き方は@RequestMappingで、
ショットカットした書き方が@GetMappingということで理解シていただければ良いです。

まとめ

今回はとりあえず簡単な「Hello World」を作成するところまでおこないました。

ポイントは、pom.xml内に

を記入して、コントローラに@RestControllerをつけるです。

今回は以上になります。

だれかのお役に立てられたら幸いです。
次回はBeanを返す方法を説明しますね

コメント

タイトルとURLをコピーしました