はじめに
Spring Boot で Web API を作るときに必ず登場するのが
@RestController です。
「Controller と何が違うの?」
「どうやってレスポンスを返しているの?」
「とりあえず付けているけど、仕組みはよくわからない」
そんな気持ちになる方も多いと思います。
この記事では、RestController の基本を
やさしく・実務で役立つ形 で整理していきます。
まずはコードを見て、そこから少しずつ理解していきましょう。
まずはコードを確認
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello World";
}
}このコードだけで、 /hello にアクセスすると文字列が返ってきます。
とてもシンプルですが、
この裏側で Spring がいろいろな処理をしてくれています。
コードのしくみを解説
@RestController とは
一言でいうと、
「HTTP リクエストを受け取り、HTTP レスポンスを返すためのクラス」
です。
実は @RestController は
@Controller + @ResponseBody
のセットになっています。
つまり、
- @Controller → Web の入り口
- @ResponseBody → 戻り値をそのままレスポンスとして返す
この 2 つをまとめた便利アノテーションです。
どうして文字列がそのまま返るのか
@RestController が付いていると、
メソッドの戻り値は View(画面)ではなくレスポンスの中身 として扱われます。
例:
- String → 文字列として返す
- オブジェクト → JSON に変換して返す
- List → JSON 配列に変換して返す
Spring が自動で JSON 変換してくれるため、
API を作るときにとても便利です。
あわせて知っておきたいポイント
@GetMapping / @PostMapping などの役割
HTTP メソッドごとにアノテーションが用意されています。
- @GetMapping → データ取得
- @PostMapping → データ作成
- @PutMapping → 更新
- @DeleteMapping → 削除
REST API の基本に沿った形で使えます。
パスパラメータやクエリパラメータも簡単
@GetMapping("/hello/{name}")
public String hello(@PathVariable String name) {
return "Hello " + name;
}@GetMapping("/search")
public String search(@RequestParam String keyword) {
return "keyword: " + keyword;
}直感的に書けるのが Spring の良さです。
JSON を返すときはオブジェクトで OK
@GetMapping("/user")
public User getUser() {
return new User("taro", 20);
}これだけで JSON に変換されます。
使うときに気をつけたいこと
戻り値を View として返したい場合は @Controller
@RestController は JSON/API 用です。
画面を返したい場合は @Controller を使います。
例外処理は ControllerAdvice とセットで
RestController は API の入り口なので、
例外ハンドリングを整えると品質が上がります。
大きな処理は Service 層へ
Controller は「受け取って返す」役割に徹し、
ビジネスロジックは Service に分離するのが実務の基本です。
まとめ
@RestController は、
「HTTP リクエストを受け取り、JSON や文字列を返すための入り口」
です。
- @Controller + @ResponseBody のセット
- 戻り値は自動で JSON 変換
- API を作るときの基本アノテーション
難しく聞こえますが、
「Web API の窓口」
と理解できれば十分です。

RestController は Spring の中でも“わかりやすいけれど奥が深い”部分です。
仕組みを知ると API 開発がぐっと楽になります。
あなたの開発が、今日より少しだけ楽になりますように。

リクエストを受け取って、ぽんっと返してくれるんだね。窓口のお仕事って大事だね。

コメント