gpt4 book ai didi

java - 在选择适当的 restful 端点时,Jersey 考虑的 MIME 类型(包含在请求的接受 header 中)的优先顺序是什么

转载 作者:行者123 更新时间:2023-11-30 09:09:34 25 4
gpt4 key购买 nike

请引用下面的代码片段

@Path("/你好")

public class Hello {

@GET
@Produces(MediaType.APPLICATION_XHTML_XML)
public String sayApplicationXhtmlXml() {
System.out.println("Application XHTML XML IS ACCEPTED");
return "Hello Jersey";
}


@GET
@Produces("*/*")
public String sayAllMimeTypes() {
System.out.println("All MIME TYPES IS ACCEPTED");
return "<?xml version=\"1.0\"?>" + "<hello> Hello " + "</hello>";
}
}

当我从带有 header 的 firefox 发送请求时

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,asterisk/asterisk;q=0.8

这是 firefox 的默认 header 。

输出是

ALL MIME TYPES IS ACCEPTED

我觉得哪里不对。

按照我的理解,输出应该是

Application XHTML XML IS ACCEPTED 

因为 application/xhtml+xml 出现在 Accept header 中的 "asterisk/asterisk" 之前(根据默认值的规则两者的 q=1.0 所以谁先出现应该给予更高的优先级)

最佳答案

在您的请求 header 中,您指定 text/htmlapplication/xhtml+xml 具有相同的品质因数(默认为 1)。它们都具有比 */* 通配符类型更高的 q 值。但是对于 Jersey,当两个 MIME 类型的 q 值相等时,它将根据它们出现的顺序选择 MIME 类型。因此在这种情况下,将选择 text/html,因为您的第二个方法 sayAllMimeTypes() 会生成任何 MIME 类型,包括 text/html。因此调用了第二种方法。

关于java - 在选择适当的 restful 端点时,Jersey 考虑的 MIME 类型(包含在请求的接受 header 中)的优先顺序是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22998139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com