REST アプリケーションの作成に Spring Boot v1.2.5 を使用しています。画像をアップロードしている間、プロパティが提供されている最大ファイルサイズをチェックしています:
multipart.maxFileSize= 128KB
application.properties で。この機能は、Spring Boot 自体によって提供されます。現在、チェックは正常に機能しています。問題は、どのように例外を処理し、ユーザーが理解できるメッセージをユーザーに返すかです。
更新 1 ----------
を使用して、MultipartException を処理するつもりの Controller 内にメソッドを作成し@ExceptionHandler
ました。うまくいかないようです。
これは私のコードです:
@ExceptionHandler(MultipartException.class)
@ResponseStatus(value = HttpStatus.PAYLOAD_TOO_LARGE)
public ApplicationErrorDto handleMultipartException(MultipartException exception){
ApplicationErrorDto applicationErrorDto = new ApplicationErrorDto();
applicationErrorDto.setMessage("File size exceeded");
LOGGER.error("File size exceeded",exception);
return applicationErrorDto;
}
更新 2 ----------
@luboskrnacが指摘した後、私は解決策を思いつくことができました. ここを使用ResponseEntityExceptionHandler
して、この特定のケースを処理できます。を使用することもできたと思いますが、メソッドが を返す前者とは対照的に、を返すことができDefaultHandlerExceptionResolver
ます。私はそれを試していません。ResponseEntityExceptionHandler
ResponseEntity
ModelAndView
これは、次を処理するために使用している最終的なコードですMultipartException
。
@ControllerAdvice
public class CustomResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
private static final Logger LOGGER = Logger.getLogger(CustomResponseEntityExceptionHandler.class);
@ExceptionHandler(MultipartException.class)
@ResponseStatus(value = HttpStatus.PAYLOAD_TOO_LARGE)
@ResponseBody
public ApplicationErrorDto handleMultipartException(MultipartException exception){
ApplicationErrorDto applicationErrorDto = new ApplicationErrorDto();
applicationErrorDto.setMessage("File size exceeded");
LOGGER.error("File size exceeded",exception);
return applicationErrorDto;
}
}
REST Api の開発/文書化に Swagger を使用しています。サイズを超えるファイルをアップロードした際のレスポンスです。
ありがとう。