rest API如何根据输入标头同时返回Json和XML响应?

时间:2019-06-10 12:51:03

标签: java rest

代码如下。在检查从标头提取的内容类型时,我想编写代码并从相同的方法返回响应。

        @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响应?

1 个答案:

答案 0 :(得分:1)

首先,您在同一方法上使用多个@Produces是错误的。可以使用String[]Annotation Type Produces

为要生成的所有类型指定@Produces

对于您的主要问题,我同意vlumi的评论,

  

您应该只返回使用对象构建的Response来返回,   然后让JAX-RS处理序列化为XML或JSON的过程,具体取决于   客户期望/喜欢的

即让框架根据客户端指定的 Accept 标头为您完成此操作,就像Raj在评论中已经提到的

  

您必须传递请求标头Accept:application / json或   应用程序/ xml

Jersey Multiple Produces