[解決済み] Spring MVCまたはSpring-Bootで異なるタイプのResponseEntityを返す最良の方法は何ですか?
2023-05-13 21:28:50
質問
Spring MVC 4 (またはSpring-Boot)を使用して、簡単なレストアアプリケーションを書きました。コントローラ内で
ResponseEntity
. しかし、場合によっては、成功のJSONを与えたいし、検証エラーの場合は、エラーのJSONを与えたいと思います。現状ではsuccessとerrorのレスポンスは全く異なるので、errorとsuccessで2つのクラスを作成しました。コントローラ内では
ResponseEntity<Success>
を返したい。そうでない場合は
ResponseEntity<Error>
. 何か方法はないでしょうか。
Success
と
Error
は、成功とエラーのレスポンスを表現するために使用する2つのクラスです。
どのように解決するのですか?
Springの
@ControllerAdvice
を使用して、エラーを処理することをお勧めします。読む
このガイド
を読むと、Spring Bootエラー処理"というセクションから、良い導入ができます。詳細な議論については
記事
をご覧ください。
この仕組みについて簡単にまとめてみました。
-
コントローラのメソッドが返すのは
ResponseEntity<Success>
. エラーや例外のレスポンスを返すことはありません。 -
すべてのコントローラの例外を処理するクラスを実装します。 このクラスのアノテーションは
@ControllerAdvice
-
このコントローラアドバイスクラスには
@ExceptionHandler
- 各例外ハンドラメソッドは、一つまたは複数の例外タイプを処理するように設定されます。これらのメソッドでは、エラーに対するレスポンスタイプを指定します。
-
この例では、検証エラーのための例外ハンドラメソッドを (コントローラのアドバイスクラスで) 宣言することになります。 戻り値の型は
ResponseEntity<Error>
このアプローチでは、APIのすべてのエンドポイントに対して、コントローラの例外処理を一か所で実装するだけでよいのです。また、あなたのAPIでは、すべてのエンドポイントで統一された例外レスポンス構造を持つことが容易になります。これにより、クライアントの例外処理を簡略化することができます。
関連
-
アクセス制限です。タイプ 'Application' は API ではない(必要なライブラリに制限がある)。
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
Git Pull Failed マージされていないファイルがあるため、Pull できません。
-
Uncaught ReferenceError: は定義されていません。
-
SpringBoot 起動エラー java.nio.charset.MalformedInputException: 入力長 = 2 解決
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] Spring MVCの@ResponseBodyメソッドがStringを返すときにHTTP 400エラーで応答するにはどうすればよいですか?
-
[解決済み] Spring MVCの@ModelAttributeとは何ですか?
-
[解決済み] Spring Bootで休憩用のベースURLを設定する方法は?
-
[解決済み] Spring Bootが暗黙的に使用するJackson JSONマッパーをカスタマイズする方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
java -jarコマンドでパッケージを実行すると、無効または破損したjarfile xxxx.jarが表示される。
-
Javaジェネリックを1つの記事で
-
java.sql.SQLException: 結果セットの開始前
-
配列定数は初期化子でのみ使用可能です。
-
CertificateException: XXXに一致するサブジェクトの代替DNS名が見つかりません 解決策
-
Java基礎編 - オブジェクト指向
-
eclipse 実行 Java、エラー: 選択を起動できず、レシーバーもありません。
-
htmlとwordの相互変換の実装(画像あり)