2014-04-22 1 views
0

나는 grails에서 API를 만들기 위해 jax-rs를 사용하고 있습니다. 나는 JSON과 XML을 전혀 사용하지 않기를 바란다. 그래서 나는 데 도움이 모든 성공적인 응답이 JSON으로 반환됩니다 단지JSON으로 DomainObjectNotFoundException

@Produces(['application/json']) 

@Produces(['application/xml','application/json']) 

를 교체 할 때. 문제는 DomainObjectNotFoundException이있을 때마다 여전히 XML 형식을 사용한다는 것입니다. 나는 그 하나를 변경하는 방법을 찾으려고 노력했지만 아직까지는 성공하지 못했습니다. 그래서 예를 들면

:

throw new DomainObjectNotFoundException(User.class, dto.id) 

는 여전히 XML 응답

<error>User with id iva not found</error> 

로 응답 내가 JSON 응답을 좀하고 싶습니다.

는 예외의 건설에 하드 코딩되고있는 XML의 콘텐츠 유형과 같은 사전 this code에 따르면

답변

1

에 감사드립니다. 나를 위해, 당신은

  1. 다음 (훨씬 덜 우아하지만, 쉬운) 수행 (아마도 과잉 가장 우아하지만)
  2. 을이 같은 목적을 위해 자신의 예외를 작성이 경우 두 가지 옵션이 있습니다

    def exception = new DomainObjectNotFoundException(User.class, dto.id) 
    def response = Response.fromResponse(exception.response).type(MediaType.APPLICATION_JSON) 
    throw new WebApplicationException (newResponse) 
    

    더 이상 특정 DomainObjectNotFoundException을 던지지 않으므로 최상의 옵션이 아닐 수 있습니다. 그걸 쓰고 난 후에, 솔직히 옵션 1로 가겠다.

+0

나는 첫번째 접근법을 택했다. – iblazevic