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

APIとフロントエンドの通信編

今パートの目標

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

環境について

  • Next.js 14.2.3
  • Typescript 5
  • SpringBoot 3.2.0
  • java 17
  • git 2.43.0
  • macOS Sonoma 14.1.1
  • Docker Desktop 4.18.0

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

ターミナルで下記コマンドを実行します。

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

HelloControllerを作成する

Httpリクエストを受け取り”Hello World”という文字列を返す、HelloControllerクラスを作成していきます。

controllerパッケージを作成する

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

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

HelloControllerを作成する

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

- src
  └ main
    └ java
      └ {パッケージ名}
        └ controller
        └ 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を付与します。

RestController (Spring Framework 6.1.6 API) - Javadoc
Spring Boot の概要から各機能の詳細までが網羅された公式リファレンスドキュメントです。開発者が最初に読むべきドキュメントです。
@GetMapping

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

@GetMapping("/api/v1/hello")
GetMapping (Spring Framework 6.1.6 API) - Javadoc
Spring Boot の概要から各機能の詳細までが網羅された公式リファレンスドキュメントです。開発者が最初に読むべきドキュメントです。

他にも以下のようなアノテーションがあります。

HTTP メソッド アノテーション
POST@PostMapping
PUT@PutMapping
DELETE@DeleteMapping
補足
@RequestMapping
@RequestMapping("/hoge")
public class HogeClass {
}

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

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

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リクエストを送信するなどができます。

SpringBootを起動する

リクエストを送信する前に、リクエストを受け取れるように下記コマンドでSpringBootのサーバーを起動しておきましょう。

share-favplace-api % docker-compose up -d

Signupする

Postman API Platform | Sign Up for Free
Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamline...

上記サイトからアカウントを作成し、Signupしてください。

リクエストを作成する

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

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

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

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

  • リクエストタイプ: GET
  • リクエストパス: http://localhost:8080/api/v1/hello

リクエストを送信する

送信ボタンを押下します

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

まとめ

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

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

コメント

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