【发布时间】:2013-06-13 11:28:41
【问题描述】:
对于公开资源“/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 docu 上,他们声明了 MIME 接受订单:
如果资源类能够生成多个 MIME 媒体 类型,选择的资源方法将对应最 客户端声明的可接受的媒体类型。进一步来说, HTTP 请求的 Accept 标头声明了最 可以接受。例如,如果 Accept 标头是 Accept: text/plain, doGetAsPlainText 方法将被调用。或者,如果 Accept header是Accept: text/plain;q=0.9, text/html,其中声明 客户端可以接受 text/plain 和 text/html 的媒体类型, 但更喜欢后者,则调用 doGetAsHtml 方法。
谁/什么决定使用哪种 MIME 类型 (text/html) 而不是另一种 (text/html)?
【问题讨论】:
-
嗯,你引用的文档说明了一切,甚至给出了例子......
标签: java rest mime-types