Приложение My Spring Boot предоставляет следующий контроллер REST:
@RestController
@RequestMapping("/api/verify")
public class VerificationController {
final VerificationService verificationService;
Logger logger = LoggerFactory.getLogger(VerificationController.class);
public VerificationController(VerificationService verificationService) {
this.verificationService = verificationService;
}
@GetMapping
public void verify(
@RequestParam(value = "s1") String s1,
@RequestParam(value = "s2") String s2) {
try {
verificationService.validateFormat(s1, s2);
} catch (InvalidFormatException e) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, e.getMessage());
}
}
}
В случае, если validateFormat()
выбрасывает InvalidFormatException
, клиент получает правильный HTTP 400. Однако тело ответа JSON по умолчанию выглядит так:
{
"timestamp": "2020-06-18T21:31:34.911+00:00",
"status": 400,
"error": "Bad Request",
"message": "",
"path": "/api/verify"
}
Значение message
всегда пусто, даже если я жестко запрограммировал его следующим образом:
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "some string");
Это класс исключения:
public class InvalidFormatException extends RuntimeException {
public InvalidFormatException(String s1, String s2) {
super(String.format("Invalid format: [s1: %s, s2: %s]", s1, s2));
}
}