对于公开资源“/hello”的类:
@Path("/hello")
public class Test {
//-- produces MIME type text/plain
@GET
@Produces(MediaType.TEXT_PLAIN)
public String thankYouTxt(){
System.out.println("thankYouTxt");
return "thankYouTxt\n";
}
//-- consumes MIME type text/plain
@GET
@Consumes(MediaType.TEXT_PLAIN)
public String thankYouInputTxt(){
System.out.println("thankYouInputTxt");
return "thankYouInputTxt";
}
//-- produces MIME type text/html
@GET
@Produces(MediaType.TEXT_HTML)
public String thankYouHTML(){
System.out.println("thankYouHTML");
return "thankYouTxtHTML";
}
//-- consumes MIME type text/html
@GET
@Consumes(MediaType.TEXT_HTML)
public void thankYouInputHTML(){
System.out.println("thankYouInputHTML");
//return "thankYouInputHTML";
}
//-- produces MIME type text/xml
@GET
@Produces(MediaType.TEXT_XML)
public String thankYouXML(){
System.out.println("thankYouXml");
return "<?xml version=\"1.0\"?> <message>thankYouTxt</message>";
}
//-- consumes MIME type text/xml
@GET
@Consumes(MediaType.TEXT_XML)
public String thankYouInputXML(){
System.out.println("thankYouInputXML");
return "thankYouInputXML";
}
}
在Api 文档上,他们声明了 MIME 接受订单:
如果资源类能够生成一种以上的 MIME 媒体类型,则选择的资源方法将对应于客户端声明的最可接受的媒体类型。更具体地说,HTTP 请求的 Accept 标头声明了最可接受的内容。例如,如果 Accept 标头是 Accept: text/plain,则将调用 doGetAsPlainText 方法。或者,如果 Accept 头是 Accept: text/plain;q=0.9, text/html,它声明客户端可以接受 text/plain 和 text/html 的媒体类型,但更喜欢后者,则将调用 doGetAsHtml 方法.
谁/什么决定使用哪种 MIME 类型 (text/html) 而不是另一种 (text/html) ?