资源方法如何生成或使用两种不同的MIME类型?

时间:2014-04-10 21:22:55

标签: java jersey jax-rs

此资源方法如何产生jsonxml结果?

我应该解析请求接受标头并建立if/else分支,或者会这样做 为了我 ?

@GET
@Produces({"application/xml", "application/json"})
public String doGetAsXmlOrJson() {
    ...
}

doGetAsXmlOrJson()如何实施的一个例子很好。

1 个答案:

答案 0 :(得分:1)

作为this Java EE tutorial

  

@Produces注释用于指定MIME媒体类型或   资源可以生成并发送回客户端的表示。

因此它实际上并不告诉JAX-RS在响应中生成两种内容类型。它最初用作确定使用哪种处理程序方法的指示符。如果您对同一路径有两个GET@Produces将有助于选择最合适的路径。

在您的演员表中,该方法可以生成两种内容类型。它最终生成哪一个取决于请求中的Accept标头。

来自同一个教程

  

如果资源类能够生成多个MIME媒体   类型,所选择的资源方法将对应最多   客户声明的可接受的媒体类型。进一步来说,   HTTP请求的Accept标头声明了最多   可以接受的。

您正在返回String类型的事实表明,由您的实现来生成正确的内容。如果您返回某种类型的Pojo,我相信Jersey会使用适当的转换工具来生成XML(可能使用JAXB)或JSON(可能使用Jackson)。

相关问题