Объект ответа вместе с кодом статуса http - PullRequest
0 голосов
/ 17 октября 2018

Я хочу вернуть http код состояния вместе с объектом ответа.Если я просто возвращаю объект ответа в сценарии сбоя, статус возвращается как 200. Но я хочу отправить статус, который возвращается службой (например, 403), вместе с объектом ответа.Но ниже кусок кода просто возвращает сообщение вместе со статусом.Я хочу, чтобы объект ответа в этом случае orderdetails объект, который имеет причины сбоя и другие поля.любая помощь, как передать объект клиенту?

@Component
public class OrderController {

@Autowired
private OrderService service;

    public OrderDetails createOrder(final OrderDetails orderVO) {
        try {
            OrderDetails orderVO = service.createOrder() // service call
        } catch(OrderException e) {
            OrderDetails orderVO = e.getOrderDetails(); // even in exception cases backend liberary sends same object with error messages        
            ServiceException exception = new ServiceException(e.getStatus(), e.getMessage());
            exception.setOrderDetails(orderVO);
            throw exception;
        }
        return orderVO; 
    }
}

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Вероятно, OrderDetails в OrderException равно нулю ... Так что с exception.setOrderDetails (orderVO); вы ставите значение NULL в Исключении !!!

0 голосов
/ 17 октября 2018

Вы можете определить @ControllerAdvice и добавить туда свою логику обработки ошибок.

@ControllerAdvice
public class SampleControllerAdvice {

     @ExceptionHandler(ServiceException.class)
     public ResponseEntity<YourResponse> handleServiceException(ServiceException e) {
         // YourResponse could be any serializable type (including ServiceException)
         YourResponse body = ...
         // Set the desired HTTP response headers
         HttpHeaders responseHeaders = ...
         // Set the desired HTTP response status
         HttpStatus status = ...
         return new ResponseEntity<YourResponse>(body, headers, status);
     }

}

Если ServiceException получает бросок, вызывается метод обработчика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...