クライアントが application/xml の Accept ヘッダーを使用して application/json コンテンツを生成するリソースを要求した場合。リクエストは HttpMediaTypeNotAcceptableException 例外で失敗し、以下のコードで説明されているように、例外ハンドラー アノテーションを使用して、レスポンス エンティティ オブジェクトのエラー メッセージ本文にラップされます。ただし、HttpMessageConverter でレスポンスに戻り値を書き込むと、再度 HttpMediaTypeNotAcceptableException を受け取ります。これは、許容可能なリクエスト タイプのレスポンスに対して生成可能なコンテンツ タイプをチェックするためですが、これはまさに、エラー メッセージを使用してクライアントに伝えようとしているものです。この問題を回避するにはどうすればよいですか? ところで、他のすべての例外はエラーメッセージにうまく解析されています。お知らせ下さい。
@ControllerAdvice
public class RestExceptionHandler extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity<Object> handleExceptionInternal(Exception ex, Object body,
HttpHeaders headers, HttpStatus status, WebRequest request) {
// Setting the response content type to json
headers.setContentType(MediaType.APPLICATION_JSON);
return ResponseEntity.status(status).headers(headers).body(body);
}
}