我使用jax-rs在grails中制作API。我希望它只使用JSON而不使用XML。 所以当我替换
@Produces(['application/xml','application/json'])
只是
@Produces(['application/json'])
它有帮助,所有成功的响应都以JSON形式返回。唯一的问题是,只要存在DomainObjectNotFoundException,它仍然使用XML格式。到目前为止,我一直试图找到如何改变那个但是不成功的。
例如:
throw new DomainObjectNotFoundException(User.class, dto.id)
仍然响应xml响应
<error>User with id iva not found</error>
我希望得到JSON回应。
提前谢谢
答案 0 :(得分:1)
根据this code,看起来XML内容类型在构造异常时被硬编码。对我来说,在这种情况下你有两个选择
执行以下操作(不那么优雅,但很简单):
def exception = new DomainObjectNotFoundException(User.class, dto.id)
def response = Response.fromResponse(exception.response).type(MediaType.APPLICATION_JSON)
throw new WebApplicationException (newResponse)
请注意,您将不再抛出特定的DomainObjectNotFoundException,因此这可能不是您的最佳选择。写完之后,老实说我会选择1。