Как переслать HTTP-ответ - PullRequest
1 голос
/ 24 мая 2019

У меня такой поток, как этот Клиент -> 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 Ответ

1 голос
/ 24 мая 2019

Хорошо, проблема была решена.В моем API ИИ использовал RestTemplate.Мне нужно было создать свой ResponseErrorHandler и затем использовать метод restTemplate.setErrorHandler().Спасибо, ребята, за вашу помощь.

...