我正在创建一个REST接口并拥有一个资源'data'。现在我希望用户可以指定他是希望数据是XML还是JSON。因此,我为同一路径创建了两个方法,一个生成application / xml,另一个生成application / json。一切正常,但如果用户没有设置“接受”标题字段,如何指定应返回的内容?
我的测试表明它并不总是一样的。昨天默认是application / xml,今天我的测试失败了,因为返回了默认的application / json。
如何指定默认值?
代码段
@GET
@Path("/rest/data")
@Produces(MediaType.APPLICATION.XML)
public Object getDataAsXML() {
// return data in XML format
}
@GET
@Path("/rest/data")
@Produces(MediaType.APPLICATION_JSON)
public Object getDataAsJSON() {
// return data in JSON format
}
干杯,
metalhamster
答案 0 :(得分:1)
@Path("/myResource")
@Produces("text/plain")// doGetAsPlainText method defaults to the MIME type of the @Produces annotation at the class level.
public class SomeResource {
@GET
public String doGetAsPlainText() {
...
}
@GET
@Produces("text/html")
public String doGetAsHtml() {
...
}
}
doGetAsPlainText方法默认为类级别的@Produces注释的MIME类型。 doGetAsHtml方法的@Produces注释会覆盖类级别的@Produces设置,并指定该方法可以生成HTML而不是纯文本。
@GET
@Produces({"application/xml", "application/json"})
public String doGetAsXmlOrJson() {
...
}
如果可接受任何媒体类型“application / xml”和“application / json”,则会调用doGetAsXmlOrJson方法。如果两者都同样可以接受,则选择前者,因为它首先出现。