I have a very simple @RestController
, and I'm trying to set a custom error message. But for some reason, the message
for the error is not showing up.
This is my controller:
@RestController
@RequestMapping("openPharmacy")
public class OpenPharmacyController {
@PostMapping
public String findNumberOfSurgeries(@RequestBody String skuLockRequest) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "This postcode is not valid");
}
}
This is the response that I get:
{
"timestamp": "2020-06-24T17:44:20.194+00:00",
"status": 400,
"error": "Bad Request",
"message": "",
"path": "/openPharmacy/"
}
I'm passing a JSON, but I'm not validating anything, I'm just trying to set the custom message. If I change the status code, I see that on the response, but the message
is always empty.
Why is this not working like expected? This is such a simple example that I can't see what may be missing. When I debug the code I can see that the error message has all the fields set. But for some reason, the message is never set on the response.
This answer was provided by the user @Hassan in the comments on the original question. I'm only posting it as an answer to give it better visibility.
Basically, all you need to do is add server.error.include-message=always
to your application.properties file, and now your message field should be populated.
This behavior was changed in Spring Boot 2.3 which you can read about here:
Spring Boot 2.3 Release Notes: Changes to the Default Error Page’s Content