Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jersey 资源方法如何生成或使用两种不同的MIME类型?_Jersey_Java_Jax Rs - Fatal编程技术网

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