У меня такой поток, как этот Клиент -> API A -> API B -> API A -> Клиент
Это конечная точка в API B. При возникновении исключения я хочу передать сообщение об ошибке в ответе HTTP моему клиенту.
@RequestMapping(value = "/getUser", method = RequestMethod.GET)
public ResponseEntity<String> get (@RequestParam(name = "userId") String userId) {
try {
User user = userService.findUserById(userId);
return new ResponseEntity<>(user.toString(),HttpStatus.OK);
} catch (SampleException e) {
log.error(e.getMessage());
return new ResponseEntity<>(e.getMessage(),HttpStatus.BAD_REQUEST);
}
}
Когда я делаю это так, как выше, это то, что получает мой Клиент.
{
"timestamp": "2019-05-24T08:30:19.637+0000",
"status": 500,
"error": "Internal Server Error",
"message": "400 null",
"path": "/getUser"
}
Но когда я изменяю свой код на:
@RequestMapping(value = "/getUser", method = RequestMethod.GET)
public ResponseEntity<String> get (@RequestParam(name = "userId") String userId) {
try {
User user = userService.findUserById(userId);
return new ResponseEntity<>(user.toString(),HttpStatus.OK);
} catch (SampleException e) {
log.error(e.getMessage());
return new ResponseEntity<>(e.getMessage(),HttpStatus.OK);
}
}
Ответ:
<200,No such user has been found,[Content-Type:"text/plain;charset=UTF-8", Content-Length:"27", Date:"Fri, 24 May 2019 08:33:51 GMT"]>
Это прекрасно работает, но я не хочу, чтобы какие-либо ошибки были 200 OK. Есть ли разумный способ это исправить?