我想返回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;
}
}
答案 0 :(得分:0)
您可以定义一个@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
引发,则调用处理程序方法。
答案 1 :(得分:0)
OrderException中的OrderDetails可能为null ... 因此,使用 exception.setOrderDetails(orderVO); ,您可以在Exception中放入null!