2012-01-15 2 views
1

내 웹 응용 프로그램에서 JAX-RS를 사용하여 자체 객체를 반환합니다. 계속하고 싶지만 HTTP 응답 코드 (예 : 무단으로 401 등)를 설정하고 싶습니다. 내가 찾은 정보에서 내 사용자 지정 개체가 아닌 응답 유형을 반환해야하는 것처럼 보입니다. 맞습니까?JAX-RS에서 사용자 정의 객체 반환 및 응답 코드 제어

내 현재 코드 (간체) - MyReponse는 JAXB를 처리하는 방법을 알고있는 객체 인 경우 :

@POST 
@Produces({MediaType.APPLICATION_XML , MediaType.APPLICATION_JSON}) 
public MyResponse RegisterUser (
     @FormParam("userName") String userName, 
     @FormParam("password") String password) { 
    // add user logic 
    return new MyResponse(....<params to ctor...); 
    } 

답변

3

예, 당신이 옳다는.

당신은 같은 것을 사용해야합니다 :

@POST 
@Produces({MediaType.APPLICATION_XML , MediaType.APPLICATION_JSON}) 
public Response RegisterUser (
    @FormParam("userName") String userName, 
    @FormParam("password") String password) { 
    // add user logic 
    return Response.status(401).entity(new MyResponse(...)).build(); 
} 

는 유용한 추가 정보를 http://jersey.java.net/nonav/documentation/latest/jax-rs.html#d4e355 (다른 장)를 참조하십시오.

+3

나는 파티에 늦었다 고 알고있다. 그러나 나는 덧글을 게시하고 싶다. 파벨이 말한 것처럼 분명히 할 수 있지만 예외를 사용하면 두 세계의 장점을 모두 얻을 수있다. 당신의 메소드는 MyObject 타입을 리턴 할 것이고, 401 예제에서 WebApplicationException을 던져서 상태 코드와 엔티티 바디를 채울 것이다. 예를 보려면 http://stackoverflow.com/a/7959366/2025882를 참조하십시오. – Mike

+0

@Mike 이 작업을 수행 할 때 오류 500이 발생합니다. 문제가 무엇입니까? –

+0

코드를 보지 못해서 미안합니다. – Mike

0

getStatus() 메서드를 재정의하면 응답 클래스를 확장하고 사용자 지정 상태를 반환 할 수 있습니다.

관련 문제