我有这样的流程客户端-> 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。有什么合理的方法可以解决吗?
答案 0 :(得分:1)
确定问题已解决。在我的API A中,我正在使用RestTemplate。我需要创建我的ResponseErrorHandler,然后使用restTemplate.setErrorHandler()
方法。谢谢大家的帮助。