У меня есть тестовый сервис, который я написал, который просто принимает заголовок файла в качестве параметра, то есть testfile.jpg. Все, что он делает, - это генерирует мое пользовательское исключение с сообщением пользовательского исключения. Когда я использую 'testfile' в качестве параметра, он работает нормально .. дает 400 код ошибки. Если я использую 'testfile.jpg', мне кажется, что расширение там не нравится, и вместо этого код состояния ошибки возвращается как внутренняя ошибка 500.
Кто-нибудь знает, что я могу сделать, чтобы это исправить? поэтому он отображает правильный код ошибки 400 при использовании файлов с расширением (например, testfile.jpg)?
Контроллер:
@ApiOperation("Tests")
@RequestMapping(value = {"/testingURL/{test}"}, method = RequestMethod.GET, produces = {MediaType.IMAGE_PNG_VALUE,MediaType.IMAGE_JPEG_VALUE})
@ResponseBody
public ResponseEntity<byte[]> getTestingURL(@PathVariable String test) throws Exception{
return assetStoreService.test(test);
}
Метод обслуживания:
public ResponseEntity<byte[]> test(final String test) throws CustomTestException{
if(!test.isEmpty()){
exceptionThrower();
}
TestImage testImage = new TestImage();
return getResponseEntity(testImage);
}
exceptionThrower:
private void exceptionThrower() throws CustomTestException {
throw new CustomTestException("blahbah");
}
CustomTestException.java:
public class CustomTestException extends Exception {
public CustomTestException(String errorMessage) {
super(errorMessage);
}
}
Обработчик исключений:
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
@ExceptionHandler(CustomTestException.class)
protected ResponseEntity handleCustomTestException (HttpServletRequest request, CustomTestException ex){
request.removeAttribute(
HandlerMapping.PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE);
TestError testError = new TestError(HttpStatus.BAD_REQUEST,ex.getMessage(),ex);
return new ResponseEntity<Object>(testError, new HttpHeaders(), testError.getStatus());
}
Бит ниже, для удаления принятого возврататипы (изображения), чтобы он мог возвращать исключительную реакцию объекта json:
request.removeAttribute(
HandlerMapping.PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE);