【发布时间】:2013-07-24 18:36:05
【问题描述】:
我想在我正在编写的程序中使用@Produces({Mediatype.Application_XML, Mediatype.Application_JSON})。我只想在一种方法上使用它,但我很困惑它什么时候返回一个 JSON 对象,什么时候返回一个 XML 页面。这是我正在编写的代码,在这两种情况下它都会返回一个 XML 提要。如果它不符合 if-else 标准,我希望它返回一个 JSON 对象。
@Path("/{search}")
@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public String getCountryData(@PathParam("search") String search, @QueryParam("ccode") String ccode , @QueryParam("scode") String scode) {
if(ccode.equals("XML")){
return "<note> <to>Tove</to> <from>Jani</from><heading>Reminder</heading> <body>Don't forget me this weekend!</body></note>";
}
return EndecaConn.ConnectDB("Search", search,"mode matchallpartial" );
}
【问题讨论】:
-
当客户端 HTTP
Accept标头用于 XML (text/xml) 时,它将返回 XML。如果是application/json,则返回json。 -
我不知道客户端要使用什么..我无法更改客户端的接受标头...因为我不是客户端..有没有其他方法可以做到这一点。 .除了创建两个新方法
-
这取决于您的客户。
-
如果您要自己编写 xml 或 json,使用
@Produces没有多大意义。 -
一切都是关于内容协商的。谷歌这个词以更好地了解机制
标签: java rest jakarta-ee annotations jersey