@TargetSE(valueSE={TYPESE,METHODSE}) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE public @interface ResponseStatus
code() および reason() でメソッドまたは例外クラスをマークします。 ステータスコードは、ハンドラーメソッドが呼び出されたときに HTTP レスポンスに適用され、ResponseEntity や "redirect:" などの他の方法で設定されたステータス情報をオーバーライドします。
警告 : このアノテーションを例外クラスで使用する場合、またはこのアノテーションの reason 属性を設定する場合は、HttpServletResponse.sendError メソッドが使用されます。
HttpServletResponse.sendError を使用すると、レスポンスは完全であると見なされ、これ以上書き込む必要はありません。さらに、サーブレットコンテナーは通常 HTML エラーページを書き込むため、reason の使用は REST API には不適切です。このような場合は、ResponseEntity を戻り値の型として使用し、@ResponseStatus を完全に使用しないことをお勧めします。
コントローラークラスに @ResponseStatus アノテーションを付けることもできます。このアノテーションは、メソッドのローカル @ResponseStatus 宣言によってオーバーライドされない限り、そのクラスとそのサブクラスのすべての @RequestMapping および @ExceptionHandler メソッドによって継承されます。
ResponseStatusExceptionResolver, HttpServletResponse.sendError(int, String)EE| 修飾子と型 | オプションの要素と説明 |
|---|---|
HttpStatus | code レスポンスに使用するステータスコード。 |
StringSE | reason レスポンスに使用される理由。 |
HttpStatus | valuecode() のエイリアス。 |
@AliasFor(value="code") public abstract HttpStatus value
code() のエイリアス。@AliasFor(value="value") public abstract HttpStatus code
デフォルトは HttpStatus.INTERNAL_SERVER_ERROR で、通常はより適切なものに変更する必要があります。
public abstract StringSE reason
デフォルトは空の文字列で、無視されます。理由を空でない値に設定して、レスポンスに使用します。