Java RESTAPI如何根据输入头返回Json和XML响应?

Java RESTAPI如何根据输入头返回Json和XML响应?,java,rest,Java,Rest,代码如下所示。当我检查从标题中提取的内容类型时,我想编写代码并从相同的方法返回响应 @POST @Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_XML) public Response addMessage(Message message , @Context UriInfo uriInfo, @HeaderParam ("

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

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

首先,在同一方法上使用多个
@products
是不正确的。可以为希望使用
@products
生成的所有类型指定
字符串[]

关于你的主要问题,我同意vlumi的评论


您应该只返回使用要返回的对象生成的响应, 并让JAX-RS根据需要将序列化处理为XML或JSON 客户期望/偏好的

i、 e.让框架根据客户指定的接受标题为您完成,正如Raj在评论中已经提到的那样


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


格式化代码,并将问题从标题移到正文您必须传递请求标题Accept:application/json或application/XML您应该只返回使用要返回的对象生成的响应,并让JAX-RS将序列化处理为XML或json,根据客户的期望/偏好。我在方法级别用@products标记进行了注释,以支持返回这两种类型的数据。但是编译器对象。正确,谢谢你的帮助。我可以在类级和方法级的products注释中提到values标记中的类型。根据Accepts参数,将为客户端序列化结果。