我有这样的流程 Client -> API A -> API B -> API A -> Client
这是 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。有什么合理的方法可以解决吗?
最佳答案
好的,问题已经解决。在我的 API A 中,我使用的是 RestTemplate。我需要创建我的 ResponseErrorHandler,然后使用 restTemplate.setErrorHandler()
方法。谢谢你们的帮助。
关于java - 如何转发 HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56288756/