Spring Web 3.2 には、DeferredResult
非同期リクエスト処理用のクラスが付属しています。setErrorResult
何か問題が発生した場合に代替応答を提供するための がありますが、http エラー コードを提供するオプションはありません。
確かに、失敗したリクエストの http 応答コードを制御できるはずです..新しい Spring API を使用してそれを行うにはどうすればよいですか?
Spring Web 3.2 には、DeferredResult
非同期リクエスト処理用のクラスが付属しています。setErrorResult
何か問題が発生した場合に代替応答を提供するための がありますが、http エラー コードを提供するオプションはありません。
確かに、失敗したリクエストの http 応答コードを制御できるはずです..新しい Spring API を使用してそれを行うにはどうすればよいですか?
メソッドのドキュメントにsetErrorResult
は次のように書かれています。
DeferredResult のエラー値を設定して処理します。値は Exception または Throwable である場合があり、その場合、ハンドラーが例外を発生させたかのように処理されます。
を設定するException
ことで、必要なコードを返す例外ハンドラーをトリガーできると思います。
引数として渡す例外には、setErrorResult
注釈を付けることができます@ResponseStatus
。たとえば、独自の例外クラスを作成します。
@ResponseStatus(HttpStatus.NOT_FOUND)
class NotFoundException extends RuntimeException {
// add your own constructors to set the error message
// and/or cause. See RuntimeException for valid ctors
}
次に、コードで、作成したコンストラクターでそれを使用します。次に例を示します。
deferredResult.setErrorResult(new NotFoundException(reason, cause));