Spring Bootの@RestControllerとは?Webアプリケーションを学んだ新人エンジニア向けにAPIをやさしく解説

こんにちは。ゆうせいです。

今回は、Spring Bootの@RestControllerとは何かを、Webアプリケーションを学んだ新人エンジニア向けに解説します。

すでに@Controller、Thymeleaf、HTMLフォーム、Model、Service、DAOあたりを学んだ人にとって、@RestControllerは少し不思議に見えるかもしれません。

なぜなら、@Controllerではreturn "users/list";のようにHTML画面を返していたのに、@RestControllerではreturn user;のようにJavaオブジェクトをそのまま返すからです。

最初に結論を言うと、@RestControllerは「画面ではなく、データを返すController」です。

Spring公式のAPIドキュメントでも、@RestControllerは@Controllerと@ResponseBodyが付いた便利なアノテーションであり、@RequestMappingメソッドはデフォルトで@ResponseBodyの動作になると説明されています。

WebアプリケーションとAPIの違い

まず、普通のWebアプリケーションとAPIの違いから整理しましょう。

種類主な返すもの利用者Spring Bootでよく使うもの
WebアプリケーションHTML画面人間、ブラウザ@Controller
APIJSONなどのデータJavaScript、スマホアプリ、別システム@RestController

Webアプリケーションは、人間が見る画面を返します。

たとえば、ユーザー一覧画面、商品詳細画面、ログイン画面などです。

一方、APIは画面ではなくデータを返します。

たとえば、次のようなJSONです。

{
    "userId": 1,
    "name": "山田太郎",
    "email": "yamada@example.com"
}




JSONとは、JavaScript Object Notationの略です。

データをやり取りするための軽い形式だと考えてください。

高校生にもわかるようにたとえるなら、Webアプリケーションは「料理された定食」を出す食堂です。

APIは「材料だけをきれいにパックして渡す食品倉庫」です。

人間がそのまま食べるなら定食、別の料理人が加工するなら材料パックが便利ですよね。

ブラウザで人間が見るならHTML。

JavaScriptやスマホアプリが使うならJSON。

この違いがとても大切です。

@Controllerの復習

まず、@Controllerの例を見てみましょう。

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class UserPageController {

    @GetMapping("/users/page")
    public String showUserPage(Model model) {

        model.addAttribute("name", "山田太郎");

        return "users/detail";
    }
}




このControllerは、Thymeleafのテンプレートを返します。

return "users/detail";は、次のファイルを表示するという意味です。

src/main/resources/templates/users/detail.html

つまり、@Controllerは主にHTML画面を返すときに使います。

画面を作るためにModelへデータを入れ、ThymeleafでHTMLを組み立てます。

@RestControllerの基本

次に、@RestControllerの例を見てみましょう。

package com.example.demo.controller;

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

@RestController
public class UserApiController {

    @GetMapping("/api/users/message")
    public String message() {
        return "ユーザーAPIです";
    }
}




この場合、return "ユーザーAPIです";はテンプレート名ではありません。

その文字列が、そのままHTTPレスポンスの中身として返されます。

ブラウザで/api/users/messageへアクセスすると、画面テンプレートではなく、次の文字がそのまま表示されます。

ユーザーAPIです

@RestControllerでは、戻り値が「ビュー名」ではなく「レスポンス本文」になります。

ここが@Controllerとの最大の違いです。

@Controllerと@RestControllerの違い

比較@Controller@RestController
主な目的HTML画面を返すJSONや文字列などのデータを返す
戻り値の意味テンプレート名レスポンス本文
よく使う相手ThymeleafJavaScript、スマホアプリ、外部システム
代表例return "users/list";return userDto;

同じreturnでも意味が違います。

@Controllerでreturn "users/list";と書くと、users/list.htmlを探します。

@RestControllerでreturn "users/list";と書くと、文字列のusers/listをそのまま返します。

たとえるなら、@Controllerは「このページを表示してください」と案内する受付です。

@RestControllerは「このデータをそのまま渡してください」と返す受付です。

@ResponseBodyとは何か

@RestControllerを理解するには、@ResponseBodyも知っておくとよいです。

@ResponseBodyは、「戻り値をレスポンス本文として返す」という意味です。

Spring Frameworkのドキュメントでは、@ResponseBodyを使うと、戻り値がメッセージコンバーターを通じてレスポンス本文に書き込まれると説明されています。

@ControllerでAPIのようにデータを返したい場合は、次のように書けます。

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class SampleController {

    @GetMapping("/api/sample")
    @ResponseBody
    public String sample() {
        return "サンプルAPIです";
    }
}

このコードは、次の@RestController版とほぼ同じ意味になります。

package com.example.demo.controller;

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

@RestController
public class SampleRestController {

    @GetMapping("/api/sample")
    public String sample() {
        return "サンプルAPIです";
    }
}




つまり、@RestControllerは、ざっくり言えば次の省略形です。

@Controller
@ResponseBody

毎回@ResponseBodyを書くのは面倒なので、API専用のControllerでは@RestControllerを使います。

APIとは何か

APIとは、Application Programming Interfaceの略です。

日本語にすると、「アプリケーション同士がやり取りするための窓口」です。

Webアプリケーションを学んだばかりの人は、最初は「画面がないWeb機能」と考えるとわかりやすいです。

たとえば、普通のWeb画面なら、人間がボタンを押してユーザー一覧を見ます。

APIなら、JavaScriptやスマホアプリがURLへアクセスして、ユーザー一覧のJSONを受け取ります。

アクセスする人・もの返ってくるもの
/users/list人間がブラウザで見るHTML画面
/api/usersJavaScriptやスマホアプリが使うJSONデータ

APIは、システム同士の会話窓口です。

人間に見せるためではなく、別のプログラムが使うための入口だと考えてください。

REST APIとは何か

@RestControllerのRestは、RESTという考え方に由来します。

RESTは、Web上でリソースを扱うための設計スタイルです。

Spring公式のRESTチュートリアルでも、RESTは標準そのものではなく、Webスケールのシステムを作るためのアーキテクチャ上のスタイルや制約の集合だと説明されています。

新人エンジニア向けには、まず次のように考えれば十分です。

URLで対象を表す
HTTPメソッドで操作を表す
JSONでデータをやり取りする





たとえば、ユーザー情報を扱うAPIなら次のようになります。

HTTPメソッドURL意味
GET/api/usersユーザー一覧を取得する
GET/api/users/1IDが1のユーザーを取得する
POST/api/usersユーザーを新規登録する
PUT/api/users/1IDが1のユーザーを更新する
DELETE/api/users/1IDが1のユーザーを削除する

URLは「何を」、HTTPメソッドは「どうする」を表します。

文法でたとえるなら、URLが名詞、HTTPメソッドが動詞です。

/api/usersという名詞に対して、GETなら取得、POSTなら作成、DELETEなら削除です。

簡単なJSONを返すサンプル

まず、ユーザー情報をJSONで返す簡単なAPIを作ってみましょう。

DTOを用意します。

package com.example.demo.dto;

public class UserDto {

    private int userId;
    private String name;
    private String email;

    public UserDto() {
    }

    public UserDto(int userId, String name, String email) {
        this.userId = userId;
        this.name = name;
        this.email = email;
    }

    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}




次に、@RestControllerを作ります。

package com.example.demo.controller;

import com.example.demo.dto.UserDto;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserApiController {

    @GetMapping("/api/users/1")
    public UserDto findUser() {

        UserDto user = new UserDto(
                1,
                "山田太郎",
                "yamada@example.com"
        );

        return user;
    }
}




このAPIへアクセスすると、次のようなJSONが返ります。

{
    "userId": 1,
    "name": "山田太郎",
    "email": "yamada@example.com"
}




ここで重要なのは、UserDtoをreturnしている点です。

@RestControllerでは、Javaオブジェクトを返すと、SpringがJSONに変換してレスポンスとして返してくれます。

Springの@ResponseBodyの説明では、レスポンス本文への変換はメッセージコンバーターによって行われると説明されています。

なぜDTOを返すのか

APIでは、Entityをそのまま返すより、DTOを返すことが多いです。

DTOとは、Data Transfer Objectの略です。

データを運ぶためのクラスです。

たとえば、UserEntityにpasswordHashが入っていたとします。

public class UserEntity {

    private int userId;
    private String name;
    private String email;
    private String passwordHash;
}




このEntityをそのままAPIで返すと、passwordHashまでJSONに含まれてしまう危険があります。

そこで、APIで返したい項目だけを持つUserDtoを作ります。

public class UserDto {

    private int userId;
    private String name;
    private String email;
}




クラス役割APIで返すか
EntityDBテーブルに近いクラス直接返すと注意が必要
DTO外部に渡すデータを整理したクラス返しやすい

APIは外部にデータを渡す窓口です。

そのため、「外に出してよいデータだけを返す」意識が大切です。

一覧を返すAPI

次に、ユーザー一覧を返すAPIを見てみましょう。

package com.example.demo.controller;

import com.example.demo.dto.UserDto;
import java.util.ArrayList;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserApiController {

    @GetMapping("/api/users")
    public List<UserDto> findAllUsers() {

        List<UserDto> userList = new ArrayList<>();

        userList.add(new UserDto(1, "山田太郎", "yamada@example.com"));
        userList.add(new UserDto(2, "鈴木花子", "suzuki@example.com"));
        userList.add(new UserDto(3, "佐藤一郎", "sato@example.com"));

        return userList;
    }
}




返ってくるJSONのイメージです。

[
    {
        "userId": 1,
        "name": "山田太郎",
        "email": "yamada@example.com"
    },
    {
        "userId": 2,
        "name": "鈴木花子",
        "email": "suzuki@example.com"
    },
    {
        "userId": 3,
        "name": "佐藤一郎",
        "email": "sato@example.com"
    }
]




JavaのListを返すと、JSONの配列になります。

JavaオブジェクトはJSONオブジェクト。

JavaのListはJSON配列。

この対応を覚えておくと、APIの戻り値が理解しやすくなります。

JavaJSON
UserDto{ "userId": 1, "name": "山田太郎" }
List<UserDto>[ { ... }, { ... } ]

@PathVariableでURLの一部を受け取る

APIでは、URLの一部を値として受け取ることがよくあります。

たとえば、/api/users/1の1を受け取る場合です。

package com.example.demo.controller;

import com.example.demo.dto.UserDto;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserApiController {

    @GetMapping("/api/users/{userId}")
    public UserDto findUserById(@PathVariable int userId) {

        return new UserDto(
                userId,
                "山田太郎",
                "yamada@example.com"
        );
    }
}




@PathVariableは、URLの中の値をJavaの引数に入れるためのアノテーションです。

アクセスURLuserIdに入る値
/api/users/11
/api/users/1010
/api/users/999999

URLの中にある値を取り出す、と考えてください。

マンションの住所でたとえるなら、/api/users/1は「ユーザーマンションの1号室」です。

@PathVariableは、その1号室という番号を取り出します。

@RequestParamで検索条件を受け取る

検索APIでは、クエリパラメータを使うことがあります。

たとえば、次のURLです。

/api/users/search?keyword=山田

keyword=山田を受け取るには、@RequestParamを使います。

package com.example.demo.controller;

import com.example.demo.dto.UserDto;
import java.util.ArrayList;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserApiController {

    @GetMapping("/api/users/search")
    public List<UserDto> searchUsers(
            @RequestParam String keyword) {

        List<UserDto> userList = new ArrayList<>();

        userList.add(new UserDto(1, keyword + "太郎", "sample@example.com"));

        return userList;
    }
}




使い方向いている場面
@PathVariable特定の1件を指定するID
@RequestParam検索条件、ページ番号、並び順

/api/users/1のように「1件を指定する」なら@PathVariable。

/api/users/search?keyword=山田のように「条件を付ける」なら@RequestParam。

まずはこの使い分けを覚えましょう。

@RequestBodyでJSONを受け取る

APIでは、ブラウザやJavaScriptからJSONを送ってもらうことがあります。

たとえば、ユーザー登録APIです。

送られてくるJSONの例です。

{
    "name": "山田太郎",
    "email": "yamada@example.com"
}




このJSONをJavaで受け取るために、Request DTOを作ります。

package com.example.demo.dto;

public class UserCreateRequest {

    private String name;
    private String email;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

     public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}




Controllerでは@RequestBodyを使います。

package com.example.demo.controller;

import com.example.demo.dto.UserCreateRequest;
import com.example.demo.dto.UserDto;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserApiController {

    @PostMapping("/api/users")
    public UserDto createUser(@RequestBody UserCreateRequest request) {

        UserDto createdUser = new UserDto(
                1,
                request.getName(),
                request.getEmail()
        );

        return createdUser;
    }
}




@RequestBodyは、リクエストの本文に入っているJSONをJavaオブジェクトへ変換します。

フォーム送信で使う@RequestParamとは違います。

アノテーション受け取るもの
@RequestParamURLパラメータやフォーム値?keyword=山田
@PathVariableURLの一部/api/users/1
@RequestBodyリクエスト本文のJSON{ "name": "山田太郎" }

HTMLフォームの世界では、name属性で値を送っていました。

APIの世界では、JSONというまとまったデータを送ることが増えます。

そのJSONを受け取る入口が@RequestBodyです。

ResponseEntityでHTTPステータスも返す

@RestControllerでは、データだけでなくHTTPステータスも意識する必要があります。

HTTPステータスとは、リクエスト結果を表す数字です。

ステータス意味よく使う場面
200 OK成功取得成功、更新成功
201 Created作成成功新規登録成功
400 Bad Requestリクエスト不正入力値が不正
404 Not Found見つからないIDのデータが存在しない
500 Internal Server Errorサーバー内部エラー想定外のエラー

新規作成APIでは、201 Createdを返すとよりAPIらしくなります。

package com.example.demo.controller;

import com.example.demo.dto.UserCreateRequest;
import com.example.demo.dto.UserDto;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserApiController {

    @PostMapping("/api/users")
    public ResponseEntity<UserDto> createUser(
            @RequestBody UserCreateRequest request) {

        UserDto createdUser = new UserDto(
                1,
                request.getName(),
                request.getEmail()
        );

        return ResponseEntity
                .status(HttpStatus.CREATED)
                .body(createdUser);
    }
}




ResponseEntityは、レスポンス本文だけでなく、HTTPステータスも細かく指定したいときに使います。

Web画面では「登録完了画面に遷移すれば成功」と考えがちです。

APIでは、呼び出し元のプログラムが判断できるように、ステータスコードで結果を伝える必要があります。

JavaScriptからAPIを呼ぶイメージ

APIは、JavaScriptから呼び出すことも多いです。

たとえば、ユーザー一覧APIをfetchで呼ぶ例です。

fetch("/api/users")
    .then(function (response) {
        return response.json();
    })
    .then(function (userList) {
        console.log(userList);
    })
    .catch(function (error) {
        console.error("API呼び出しでエラーが発生しました。", error);
    });




/api/usersがJSONを返します。

JavaScript側はresponse.json()でJSONをJavaScriptのオブジェクトに変換します。

つまり、@RestControllerは、JavaScriptとSpring Bootをつなぐ窓口としてよく使われます。

役割担当
画面の操作JavaScript
データの取得や登録Spring Bootの@RestController
データ保存Service、DAO、DB

@RestControllerでよく使うアノテーション

アノテーション意味
@RestControllerAPI用ControllerにするJSONを返す
@GetMappingGETリクエストを受け取る一覧取得、詳細取得
@PostMappingPOSTリクエストを受け取る新規登録
@PutMappingPUTリクエストを受け取る更新
@DeleteMappingDELETEリクエストを受け取る削除
@PathVariableURLの一部を受け取る/api/users/{userId}
@RequestParamクエリパラメータを受け取る?keyword=山田
@RequestBodyJSON本文を受け取る登録リクエスト

@RestControllerを学ぶときは、まず@GetMapping、@PostMapping、@PathVariable、@RequestParam、@RequestBodyをセットで覚えるとよいです。

CRUD APIのサンプル

CRUDとは、Create、Read、Update、Deleteの略です。

日本語では、作成、読み取り、更新、削除です。

APIの基本操作は、このCRUDで考えると整理しやすいです。

package com.example.demo.controller;

import com.example.demo.dto.UserCreateRequest;
import com.example.demo.dto.UserDto;
import java.util.ArrayList;
import java.util.List;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserApiController {

    @GetMapping("/api/users")
    public List<UserDto> findAll() {

        List<UserDto> users = new ArrayList<>();

        users.add(new UserDto(1, "山田太郎", "yamada@example.com"));
        users.add(new UserDto(2, "鈴木花子", "suzuki@example.com"));

        return users;
    }

    @GetMapping("/api/users/{userId}")
    public UserDto findById(@PathVariable int userId) {

        return new UserDto(
                userId,
                "山田太郎",
                "yamada@example.com"
        );
    }

    @PostMapping("/api/users")
    public ResponseEntity<UserDto> create(
            @RequestBody UserCreateRequest request) {

        UserDto createdUser = new UserDto(
                3,
                request.getName(),
                request.getEmail()
        );

        return ResponseEntity
                .status(HttpStatus.CREATED)
                .body(createdUser);
    }

    @PutMapping("/api/users/{userId}")
    public UserDto update(
            @PathVariable int userId,
            @RequestBody UserCreateRequest request) {

        return new UserDto(
                userId,
                request.getName(),
                request.getEmail()
        );
    }

    @DeleteMapping("/api/users/{userId}")
    public ResponseEntity<Void> delete(@PathVariable int userId) {

        return ResponseEntity.noContent().build();
    }
}




このサンプルはDBに接続していません。

まずは@RestControllerの動きを理解するための簡単な例です。

実務では、このControllerからServiceを呼び出し、ServiceからDAOやRepositoryを呼び出してDBを操作します。

Webアプリで学んだ構成との対応

Webアプリを学んだ人向けに、HTML画面版とAPI版を対応させます。

役割HTML画面版API版
Controller@Controller@RestController
返すものThymeleafテンプレート名JSONデータ
入力受け取り@RequestParam、@ModelAttribute@RequestParam、@PathVariable、@RequestBody
画面表示ThymeleafJavaScriptやスマホアプリが表示
成功時redirectや完了画面200、201などのHTTPステータス
エラー時エラー画面400、404、500などのJSON

Webアプリでは、Spring Bootが画面まで作って返していました。

APIでは、Spring Bootはデータだけ返します。

画面をどう作るかは、JavaScript、React、Vue、スマホアプリなど別の担当に任せることが多いです。

@RestControllerで注意すること

HTMLテンプレート名を返したいなら使わない

@RestControllerで次のように書いても、users/list.htmlは表示されません。

@RestController
public class UserApiController {

    @GetMapping("/users")
    public String users() {
        return "users/list";
    }
}




この場合、ブラウザには文字列としてusers/listが表示されます。

HTML画面を表示したいなら@Controllerを使ってください。

Entityをそのまま返しすぎない

APIでは、外に出してよいデータだけを返す必要があります。

passwordHash、内部メモ、削除フラグ、管理者用情報などを誤って返さないようにしましょう。

DTOを作り、返す項目を制限してください。

HTTPステータスを意識する

APIでは、データだけでなくHTTPステータスも重要です。

登録成功なら201。

データなしなら404。

入力不正なら400。

想定外のエラーなら500。

このように、呼び出し元が判断しやすい返し方にします。

例外処理を共通化する

APIでは、例外が起きたときのJSON形式をそろえると扱いやすくなります。

@RestControllerAdviceを使うと、API用の例外処理を共通化できます。

@RestControllerAdvice
public class ApiExceptionHandler {

    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleException(Exception e) {
        return ResponseEntity
                .status(500)
                .body("サーバー内部でエラーが発生しました。");
    }
}




エラーの形式がバラバラだと、JavaScript側やスマホアプリ側が困ります。

APIでは、成功レスポンスだけでなく、エラーレスポンスの形も設計しましょう。

@RestControllerを使う場面

場面@RestControllerが向いているか理由
ThymeleafでHTML画面を表示する向いていない@Controllerのほうが自然
JavaScriptからデータを取得する向いているJSONを返しやすい
スマホアプリにデータを渡す向いている画面ではなくデータが必要だから
外部システムと連携する向いているHTTPとJSONでやり取りしやすい
ReactやVueのバックエンドを作る向いているフロントエンドとAPIで分離できる

新人エンジニアは、まず「HTMLを返すなら@Controller、JSONを返すなら@RestController」と覚えてください。

もちろん、細かい例外はあります。

しかし、最初の理解としてはこの分け方で十分です。

Postmanやcurlで確認する

APIはブラウザで見るだけでなく、Postmanやcurlで確認することが多いです。

curlの例です。

curl http://localhost:8080/api/users

POSTでJSONを送る例です。

curl -X POST http://localhost:8080/api/users \
  -H "Content-Type: application/json" \
  -d "{\"name\":\"山田太郎\",\"email\":\"yamada@example.com\"}"

APIは画面がないため、最初は確認しづらく感じます。

しかし、Postmanやcurlを使うと、リクエストとレスポンスを直接確認できます。

これは、Webアプリでブラウザ画面を確認するのと同じくらい重要です。

まとめ

@RestControllerは、Spring BootでAPIを作るためによく使うアノテーションです。

@ControllerがHTML画面を返すのに対して、@RestControllerはJSONや文字列などのデータを返します。

ポイント内容
@RestControllerAPI用Controllerを作る
@Controllerとの違いテンプレート名ではなくレスポンス本文を返す
JSONAPIでよく使うデータ形式
@PathVariableURLの一部を受け取る
@RequestParamクエリパラメータを受け取る
@RequestBodyJSON本文をJavaオブジェクトとして受け取る
ResponseEntityHTTPステータスとレスポンス本文を返す

一言でまとめるなら、@RestControllerは「画面ではなくデータを返すController」です。

Webアプリケーションを学んだ新人エンジニアは、次の対応関係を覚えてください。

HTML画面を返す
        ↓
@Controller
        ↓
Thymeleaf

JSONデータを返す
        ↓
@RestController
        ↓
API

APIを理解すると、Spring Bootはブラウザ画面だけでなく、JavaScript、スマホアプリ、外部システムともつながるようになります。

今後の学習では、@GetMapping、@PostMapping、@PathVariable、@RequestParam、@RequestBody、ResponseEntity、DTO、HTTPステータス、JSON、@RestControllerAdviceを順番に学ぶとよいです。まずは小さなUser APIを作り、ブラウザ、Postman、curlでレスポンスを確認してみましょう!

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。