Rest资源文件中的两个方法具有相同的@Path但不同的mediaType输出

时间:2015-12-09 18:26:44

标签: java web-services rest postman

我的Java Rest资源文件中有两个方法,它们具有相同的@Path uri但不同的@produces。以下代码:

@GET
@Path("/messages")
@Produces(MediaType.APPLICATION_XML)
 public List<Message> getAllMessages() {


    return new ArrayList<Message>(service.getMessageMap().values());
}

@GET
@Path("/messages")
@Produces(MediaType.APPLICATION_JSON)
 public List<Message> getAllMessagesJSON() {


    return new ArrayList<Message>(service.getMessageMap().values());
}

当我用POSTMAN休息客户端测试时,我总是得到JSON输出!! 有人可以解释为什么?如果我想获得xml以及json输出,该怎么办? 我尝试将内容类型更改为application / xml ..但我总是得到json !!

1 个答案:

答案 0 :(得分:2)

Content-Type用于发送的数据类型,由客户端作为请求标头发送,或由服务器作为响应标头发送。所以你作为客户端发送标题是没用的,因为你没有发送任何数据。对于客户端,当它想要告诉服务器它想要什么类型时,它使用Accept: <media-type>标头。

如果没有设置Accept标头,则通常默认为*/*,以便在您的情况下选择哪种方法。