2016-12-23 2 views
-1

Я разработал модуль входа в RESTFul API с использованием трикотажа.Как вернуть массив из двух объектов JSON в Джерси RESTFul API (JAX-RS)

всякий раз, когда произошла какая-то ошибка при Логин он возвращает код ошибки и сообщение, как,

{ 
    "errorFlag": 1, 
    "errorMessage": "Login Failed" 
} 

, но всякий раз, когда я получаю успешных результатов он возвращает

{ 
    "apiKey": "3942328b-fa65-496c-bf32-910aafbc1b0e", 
    "email": "[email protected]", 
    "name": "Chandrakant" 
} 

Я ищу результатов, как показано ниже

{ 
      "errorFlag": 0, 
      "errorMessage":{ 
      "apiKey": "3942328b-fa65-496c-bf32-910aafbc1b0e", 
      "email": "[email protected]", 
      "name": "Chandrakant"} 
} 
+0

Я действительно не понимаю смысл наличия чего-то иного, кроме сообщения об ошибке в поле с именем «errorMessage», но в любом случае, каков ваш вопрос? Что мешает вам это делать? Как вы планируете хранить ключ API и имя пользователя, если аутентификация не удалась, и вы, таким образом, не знаете, кто такой пользователь? –

+0

См. Обновленный вопрос, клиентское приложение будет проверять, равен ли флаг 1 или 0 –

+1

. Я до сих пор не понимаю смысла наличия чего-то другого, кроме сообщения об ошибке в поле «errorMessage». И вы все еще не сказали, каков ваш вопрос, и что мешало вам это делать. Но зачем вы это делаете? Клиент должен уже знать, что это успех, потому что вы отправляете ответ со статусом 2xx (обычно 200 - OK). И он должен знать, что это ошибка, потому что вы отправляете ответ с сообщением об ошибке (здесь оно должно быть 401). Это стандартный HTTP-способ делать что-то, и все клиентские HTTP-массивы полагаются на эти стандартные способы. –

ответ

0

Использовать структуру, как показано ниже,

{ 
    status/statusCode : 200/400, //eg. 200 for success, any other for failure. 
    statusMessage : "Success/<failureMessage>", 
    errorDetails : "Failed due to <reason>" //optional 
    data :{ //data will exists only in case of success call. 
    } 
} 

вы можете добиться этого, как показано ниже,

@GET 
@Path("/images/{image}") 
@Produces("image/*") 
public Response getImage(@PathParam("image") String image) { 
  File f = new File(image); 
  
  if (!f.exists()) { 
    throw new WebApplicationException(404); 
  } 
  
  String mt = new MimetypesFileTypeMap().getContentType(f); 
  return Response.ok(f, mt).build(); 
} 
+0

Это имеет смысл, но как я могу достичь этого, любые примеры кода –

+0

Используйте класс классов «Ответ» класса, просмотрите документы, и вы найдете, как создать собственный ответ. –

0

Вы можете вернуть все атрибуты в HashMap в качестве ключевого значения. Ниже кусок кода работает для меня

@post @Path ("/ тест") @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) проверка общественного HashMap (InputStream inputJsonObj) { HashMap map = new HashMap(); map.put ("ключ1", "значение1"); карта возврата;
}