2014-07-13 3 views
-2

createCustomer() 메소드가 있는데이 메소드는 POST 메소드이며 MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON을 모두 사용하므로 실제 MIME 유형을 확인하려고합니다. 클라이언트에서 온 요청은 XML 또는 JSON 일 수 있으며 요청의 MIME 유형에 따라 두 가지 다른 메소드를 호출하려고합니다.MIME 유형을 기반으로 REST 요청을 처리합니다.

들어오는 요청의 MIME 형식을 확인하고 두 가지 방법으로 형식 호출을 기반으로 코드를 제공 해줄 수 있습니까?

아래의 예제 코드는 다음과 같습니다

@POST 
@Path("/createCustomer") 
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) 
public Response createCustomer(Customer customer) { 
    //if the request is in JSON then call the method createCustomerJSON() 
    //else if the request is in XML then call the method createCustomerXML() 

    //String output = output from either the method createCustomerJSON() or createCustomerXML() 

    return Response.status(200).entity(output).build(); 
} 

답변

0

우선 무엇인가 코드를 게시 해 두었을 것입니다.

둘째, 동일한 경로를 사용하여 XML을 사용하는 방법과 JSON을 사용하는 두 가지 방법을 만드는 것이 해결책 중 하나입니다.

@POST 
@Path("yourPath") 
@Consumes(MediaType.APPLICATION_XML); 
public Response createCustomerXML() {...} 

@POST 
@Path("yourPath") 
@Consumes(MediaType.APPLICATION_JSON); 
public Response createCustomerJSON() {...} 
0

javax.ws.rs.Consumes 주석 당신이 필요 아마. 다른 주석에 다른 주석을 넣음으로써 XML 및 JSON 처리를 분리 할 수 ​​있습니다. 자바 독에서

:

는 자원 클래스 또는 MessageBodyReader의 방법이 받아 들일 수있는 미디어 유형을 정의합니다. 지정하지 않으면 컨테이너는 모든 미디어 유형을 수용 할 수 있다고 간주합니다. 메소드 레벨 주석은 클래스 레벨 주석보다 우선합니다. 컨테이너는 호출 된 메소드가 HTTP 요청 엔티티 본문의 미디어 유형을 사용할 수 있는지 확인해야합니다. 그러한 방법을 사용할 수없는 경우 컨테이너는 RFC 2616에 지정된 HTTP "415 지원되지 않는 미디어 유형"으로 응답해야합니다.

관련 문제