Java 在选择适当的REST端点时,Jess如何考虑MIME类型的优先级顺序(包含在请求中的接受标头中)

Java 在选择适当的REST端点时,Jess如何考虑MIME类型的优先级顺序(包含在请求中的接受标头中),java,rest,jersey,jax-rs,mime-types,Java,Rest,Jersey,Jax Rs,Mime Types,请参考下面的代码片段 @路径(“/hello”) 这是firefox的默认标题 输出为 ALL MIME TYPES IS ACCEPTED 我觉得有点不对劲 根据我的理解,输出应该是 Application XHTML XML IS ACCEPTED 因为Accept标题中的应用程序/xhtml+xml出现在的“星号/星号”之前(根据规则,如果两者的默认值均为q=1.0,则无论谁先出现,都应获得更高的优先级)在请求标题中,指定text/html和application/xhtml+xml

请参考下面的代码片段

@路径(“/hello”)

这是firefox的默认标题

输出为

ALL MIME TYPES IS ACCEPTED
我觉得有点不对劲

根据我的理解,输出应该是

Application XHTML XML IS ACCEPTED 

因为
Accept
标题中的
应用程序/xhtml+xml
出现在
的“星号/星号”
之前(根据规则,如果两者的默认值均为q=1.0,则无论谁先出现,都应获得更高的优先级)

在请求标题中,指定
text/html
application/xhtml+xml
具有相同的质量因子(默认为1)。它们的
q
值都高于
*/*
通配符类型。但是,对于Jersey,当两个MIME类型具有相等的
q
值时,它将根据它们出现的顺序选择MIME类型。因此,在本例中,将选择
text/html
,因为您的第二个方法
sayAllMimeTypes()
生成任何MIME类型,包括
text/html
。因此,调用第二个方法

我不认为这是一个HTTP的东西,它似乎是一个新泽西的东西。我只拿它找到的匹配的第一个。我只需要澄清一下,你的意思是说,因为第二个方法将@products(/)作为mimetype,这意味着它可以生成任何MIME类型。因此,选择这些方法可以将(text/html)作为mimetype生成,这在传入的Accept header中是最高优先级的,这是正确的。第二种方法匹配请求头中优先级最高的MIME类型(text/html)。如果在发送请求时,我们交换了请求头中text/html和application/xhtml+xml的顺序,那么Jersey将调用哪一种资源?我确信您应该已经得到了上述问题的答案。但是我在这里测试我的理解:)当您交换顺序时,您没有看到第一个方法的输出,即“接受应用程序XHTML XML”吗?
ALL MIME TYPES IS ACCEPTED
Application XHTML XML IS ACCEPTED