代码如下。在检查从标头提取的内容类型时,我想编写代码并从相同的方法返回响应。
@POST
@Produces(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_XML)
public Response addMessage(Message message , @Context UriInfo uriInfo,
@HeaderParam ("content-type") String contentType) throws
URISyntaxException
{
//Conditional check based on the content type.
if(contentType.equals("application/json")) {
return json;
}else {
return xml;
}
}
rest API如何根据输入标头同时返回Json和XML响应?
答案 0 :(得分:1)
首先,您在同一方法上使用多个@Produces
是错误的。可以使用String[]
,Annotation Type Produces
@Produces
对于您的主要问题,我同意vlumi的评论,
您应该只返回使用对象构建的Response来返回, 然后让JAX-RS处理序列化为XML或JSON的过程,具体取决于 客户期望/喜欢的
即让框架根据客户端指定的 Accept 标头为您完成此操作,就像Raj在评论中已经提到的
您必须传递请求标头Accept:application / json或 应用程序/ xml