Можно ли вернуть объект данных И пользовательское сообщение об ошибке? - PullRequest
0 голосов
/ 10 апреля 2020

Следующее RESTful Service работает нормально.

Пользователи звонят в службу, передавая номер Сотрудника, и он возвращает всю информацию о сотруднике.

@GET
@Path("/employeeData")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public EmployeeObject getEmployeeInfo(@@QueryParam ("EmployeeNumber") int empNo) 
{

   ////Do Stuff    

    return employeeObject;
 }

Из того, что было прочитано, чтобы вернуть обратно пользовательское сообщение об ошибке, оно должно выглядеть примерно так:

@GET
@Path("/employeeData")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public ResponseEntity<Object> getEmployeeInfo(@@QueryParam ("EmployeeNumber") int empNo) 
{

   ////Do Stuff    

   ApiError apiError = new ApiError(HttpStatus.NOT_FOUND, ex.getLocalizedMessage(), error);
   return new ResponseEntity<Object>(apiError, new HttpHeaders(), apiError.getStatus());
 }

Но что, если моя процедура более сложна и требует вернуть обратно объект И связанную с ним ошибку. Например:

@GET
@Path("/employeeData")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public EmployeeObject getEmployeeInfo(@@QueryParam ("EmployeeNumber") int empNo) 
{

   //DB call to get Employee info works fine. 

   //Based on data in the employee object returned from the 1st call, a 2nd call is
   //is made to the database and that fails.      

    return employeeObject;
 }

Несмотря на то, что 2-й вызов не удался, пользователю все еще нужна база данных от 1-го вызова, но также важно знать, что 2-й вызов не выполнен, вместо того, чтобы пользователь думал, что этот сотрудник просто не сделал ' у него нет никаких данных.

Возможно ли это при одновременном использовании продукта Service json mime-тип?

Ключ не должен включать ошибку с объектом. Два независимых объекта должны быть возвращены, только если есть ошибка.

...