🐡

Springboot3のRESTAPIでHelloWorldを返すコントローラーを作成する

2023/12/28に公開

はじめに

こちらに移行しました🙇
https://kubodai-code.com/spring-react8/

バックエンドにSpringBoot3(REST API)フロントエンドにReactを使用してSNS風のWebアプリケーションを作っていきます。
勉強も兼ねて記録に残したいと思いますので誰かの役に立てば嬉しいです😊

今パートの目標

前回はapiとfrontのソースコードをgit管理し、githubにプッシュするところまで実施しました。
今回はリクエストを送ると「HelloWorld」というテキストをレスポンスとして返すHelloControllerの作成をしていきたいとおもます。
https://zenn.dev/pandaman/articles/acd7b84f292f10

環境について

  • react 18.2.0
  • Typescript 4.9.5
  • SpringBoot 3.2.0
  • java 17
  • git 2.43.0
  • macOS Sonoma 14.1.1
  • Docker Desktop 4.18.0

作業用ブランチを作成する

share-favplace-front % git fetch
share-favplace-front % git checkout -b develop
share-favplace-front % git checkout -b develop_20231226_responseToFront

HelloControllerを作成する

controllerパッケージを作成する

以下階層にcontrollerパッケージを作成します。

- src
  └ main
    └ java
      └ {パッケージ名}
        └ controller

HelloControllerを作成する

先ほど作成したcontrollerパッケージにHelloController.javaを作成します。

- src
  └ main
    └ java
      └ {パッケージ名}
        └ controller
	  └ HelloController.java

HelloController.javaを編集する

HelloController.java
package com.pandaman.sharefavplaceapi.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/api/v1/hello")
    public String getHello() {
        return "HelloWorld!!!!";
    }
}

コードについて説明していきます

@RestController

@Controllerアノテーションと@ResponseBodyアノテーションを付与するのと同じ意味です。
つまり、このクラスはコントローラークラスであり、クラス内のリクエストマッピングアノテーション(@GetMapping等)が付与されたメソッドの戻り値を Web レスポンスの本文にバインドすることを示すアノテーションです。

REST APIではなく、テンプレートエンジンなどを使用する場合は@Controllerを付与します。

https://spring.pleiades.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/RestController.html

@GetMapping

HTTP GET リクエストを受け取った場合、付与したメソッドを実行するということを示すアノテーションです。
GETリクエストのパスの指定は以下のように行います。

@GetMapping("/api/v1/hello")

https://spring.pleiades.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/GetMapping.html

他にも以下のようなアノテーションがあります。
| HTTP メソッド | アノテーション |
| POST | @PostMapping |
| PUT | @PutMapping |
| DELETE | @DeleteMapping |

補足

@RequestMapping

HogeClass.java
@RequestMapping("/hoge")
public class HogeClass {
}

上記のようにクラスにRequestMappingアノテーションを付与することで、クラス内で共通のHTTPリクエストのパスを指定することができます。

つまり、"/api/v1"は本アプリの全てのパスの前につくので、以下のように書き換えることができます。

HelloController.java
package com.pandaman.sharefavplaceapi.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/v1")
public class HelloController {
    @GetMapping("hello")
    public String getHello() {
        return "HelloWorld!!!!";
    }
}

リクエストを送信する

作成したコントローラーが正常に動作するか確認します。
今回はPostmanを使用して確認していきます。PostmanとはAPIのテストと開発を支援するツールでHTTPリクエストを送信するなどができます。

手順

Signupする

https://www.postman.com/
上記サイトからまず、アカウントを作成し、Signupしてください。

リクエスト作成する

Signupすると以下のような画面になると思います。

※右上の歯車から、「Settings」→「General」→「Language」から日本語に変更できます。

左のサイドバーから「ワークスペース」→「ワークスペースを作成」を押下し、「名前」の記入と「誰が使用するか」を選択してワークスペースを作成します。

「➕」ボタンを押して新しいリクエストタブを開き、下記のように入力します。

リクエストを送信する

送信ボタンを押下します

レスポンスに「HelloWorld!!!!」が返ってきたら成功です。

まとめ

以上で「HelloWorld!!!!」をレスポンスとして返すAPIを作成することができました。
PostmanはAPI開発をする上で有用なツールなのでどんどん使っていきましょう。

次回はフロントエンドからAPIに向けてリクエストを送信するをやっていきたいと思います。

Discussion