【Spring Boot】ResponseEntity の便利な使い方をやさしく解説

Java入門・実践
スポンサーリンク
スポンサーリンク

はじめに

Spring Boot で Web API を作っていると、
ResponseEntity というクラスをよく目にします。

「return で文字列返すだけじゃダメなの?」
「ステータスコードってどうやって変えるの?」
「ヘッダーを付けたいときは?」

そんな疑問を解決してくれるのが ResponseEntity です。

この記事では、ResponseEntity の便利な使い方を
やさしく・実務で役立つ形 で整理していきます。

まずはコードを見て、そこから少しずつ理解していきましょう。

まずはコードを確認

Java
@GetMapping("/hello")
public ResponseEntity<String> hello() {
    return ResponseEntity.ok("Hello World");
}

このように、
ステータスコード + ボディ + ヘッダー
を自由に返せるのが ResponseEntity の強みです。

ResponseEntity とは

一言でいうと、

「HTTP レスポンスを自由にカスタマイズできるクラス」

です。

  • ステータスコード
  • レスポンスボディ
  • レスポンスヘッダー

これらをまとめて返すことができます。

よく使う便利な書き方

OK(200)を返す

Java
return ResponseEntity.ok("success");

ステータスコードを指定する

Java
return ResponseEntity.status(HttpStatus.CREATED).body("created");

ヘッダーを付ける

Java
return ResponseEntity
        .ok()
        .header("X-My-Header", "value")
        .body("hello");

空レスポンス(204 No Content)

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

エラーを返す(400 Bad Request)

Java
return ResponseEntity.badRequest().body("invalid request");

JSON を返す

Java
return ResponseEntity.ok(new UserResponse("taro", 20));

オブジェクトは自動で JSON に変換されます。

実務でよく使うパターン

新規作成(201 Created)

Java
@PostMapping("/users")
public ResponseEntity<UserResponse> create(@RequestBody UserRequest req) {
    UserResponse res = service.create(req);
    return ResponseEntity.status(HttpStatus.CREATED).body(res);
}

更新成功(200 OK)

Java
return ResponseEntity.ok(updatedUser);

削除成功(204 No Content)

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

バリデーションエラー(400 Bad Request)

ControllerAdvice と組み合わせると最強です。

ResponseEntity を使うメリット

ステータスコードを明確にできる

文字列を返すだけでは 「成功なのか?失敗なのか?」 がわかりません。

ResponseEntity なら

  • 200
  • 201
  • 400
  • 404
  • 500 など、
    意図を明確にできます。

ヘッダーを自由に付けられる

認証トークンやページング情報など、
API ではヘッダーが必要になる場面が多いです。

API の設計がきれいになる

Controller の戻り値が統一され、
読みやすく、保守しやすくなります。

あわせて知っておきたいポイント

ResponseEntity はジェネリクス

Java
ResponseEntity<UserResponse>

のように、返す型を指定できます。

body() を省略できる場合もある

Java
return ResponseEntity.ok().build();

ResponseEntity と例外ハンドリングは相性抜群

ControllerAdvice で

Java
return ResponseEntity.status(404).body(error);

のように返せます。

使うときに気をつけたいこと

ステータスコードを正しく使う

  • 作成 → 201
  • 削除 → 204
  • バリデーションエラー → 400
  • 認証エラー → 401
  • 権限なし → 403
  • 見つからない → 404

API の品質が大きく変わります。

ボディが不要なときは noContent()

空文字を返すよりも意図が明確です。

ヘッダーの付けすぎに注意

必要な情報だけに絞ると読みやすくなります。

まとめ

ResponseEntity は、
「HTTP レスポンスを自由にカスタマイズできる便利なクラス」
です。

  • ステータスコードを返せる
  • ヘッダーを付けられる
  • JSON を返すのも簡単
  • ControllerAdvice と組み合わせると最強

難しく聞こえますが、
「成功・失敗・ヘッダーをきれいに返すための道具」
と理解できれば十分です。


decopon
decopon

ResponseEntity を使いこなすと、
API の表現力が一気に上がります。
ステータスコードやヘッダーを丁寧に扱うだけで、
API の品質がぐっと高まります。
あなたの開発が、今日より少しだけ楽になりますように。

moco
moco

レスポンスに気持ちを添えて返せるなんて…ResponseEntity さん、やさしいね。

コメント

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