2016-12-23 6 views
-1

저지를 사용하여 RESTFul API에 로그인 모듈을 설계했습니다.반환 방법 Jersey RESTFul API (JAX-RS)에서 두 JSON 객체의 배열

이 같은 오류 코드와 메시지를 반환합니다 로그인하는 동안 오류가 발생 할 때마다,

{ 
    "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

위 클래스의'Response' 클래스를 사용하여 문서를 살펴보고 독자적인 응답을 만드는 방법을 찾을 것입니다. –

0

당신은 키 값으로 HashMap의 모든 속성을 반환 할 수 있습니다. 코드 조각 아래 나를 위해

@POST @Path ("/ 테스트") @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) 공공 HashMap의 검사 (의 InputStream inputJsonObj를) 근무 { 의 HashMap map = 새로운 HashMap(); map.put ("key1", "value1"); 반환지도;