私は春のMVCとリレーショナルデータベースを使用しています。 Springが書き込むテーブルの1つに、期待通りに機能する一意性制約があります。特定の例外が発生したときにHTTP 400応答を返すにはどうすればよいですか?
現在、その制約に違反する要求が出された場合、例外org.springframework.dao.DuplicateKeyException
がスローされ、HTTP 500応答(内部サーバーエラー)が返されますが、実際にはシステムに問題はありませんが、ユーザーの要求があります。
例外をキャッチしてHTTP 400(不良リクエスト)を返す最も自然な方法は何ですか?私は実際にそれをキャッチすることができます:
@RequestMapping(value = "/", method = RequestMethod.POST)
public ResponseEntity<BaseMaterial> insert(@RequestBody BaseMaterial baseMaterial) {
try {
baseMaterial.setId(UUID.randomUUID());
baseMaterialService.insert(baseMaterial);
return ResponseEntity.ok(baseMaterial);
} catch (DuplicateKeyException e) {
return ResponseEntity.badRequest().build();
}
}
しかし、私はそれを私のエンドポイントごとに行う必要があります。私はまた、ResponseEntity
ラッパーなしのPOJOだけを使用することを好むでしょう。
ありがとうございます!
は '@ ControllerAdvice'を使用します。 –