如何转发HTTP响应

时间:2019-05-24 08:34:25

标签: java http request response http-status-codes

我有这样的流程客户端-> 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。有什么合理的方法可以解决吗?

1 个答案:

答案 0 :(得分:1)

确定问题已解决。在我的API A中,我正在使用RestTemplate。我需要创建我的ResponseErrorHandler,然后使用restTemplate.setErrorHandler()方法。谢谢大家的帮助。