Jersey 资源方法如何生成或使用两种不同的MIME类型?
此资源方法如何生成Jersey 资源方法如何生成或使用两种不同的MIME类型?,jersey,java,jax-rs,Jersey,Java,Jax Rs,此资源方法如何生成json或xml结果 我应该解析requestaccept头并进行if/else分支,还是将这样做 给我 @GET @Produces({"application/xml", "application/json"}) public String doGetAsXmlOrJson() { ... } 一个关于如何实现doGetAsXmlOrJson()的示例会很好。As states @products注释用于指定MIME媒体类型或 资源可以生成并发送回客户端的表示 因
json
或xml
结果
我应该解析requestaccept头并进行
if/else
分支,还是将这样做
给我
@GET
@Produces({"application/xml", "application/json"})
public String doGetAsXmlOrJson() {
...
}
一个关于如何实现doGetAsXmlOrJson()
的示例会很好。As states
@products注释用于指定MIME媒体类型或
资源可以生成并发送回客户端的表示
因此它实际上并没有告诉JAX-RS在响应中生成两种内容类型。它最初用作确定要使用哪个处理程序方法的指示器。如果同一路径有两个GET
s,那么@products
将有助于选择最合适的路径
在cast中,该方法可以生成两种内容类型。它最终生成哪一个取决于请求中的Accept
头
来自同一教程
如果资源类能够生成多个MIME媒体
类型,则选择的资源方法将对应于
客户端声明的可接受媒体类型。更具体地说,
HTTP请求的Accept标头声明了最重要的内容
可以接受
返回一个
字符串的事实表明,要生成正确的内容取决于您的实现。相反,如果您返回某种Pojo,我相信Jersey会使用适当的转换工具来生成XML(可能使用JAXB)或JSON(可能使用Jackson)。我是否应该解析请求接受头并进行If/else分支?@tarrsalah是的,这似乎适合字符串
返回类型。我认为应该有一个@HeaderParam
。