如何使用Jersey指定REST资源返回的默认MimeType

时间:2013-11-27 08:23:41

标签: rest jersey

我正在创建一个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

1 个答案:

答案 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方法。如果两者都同样可以接受,则选择前者,因为它首先出现。

@Produce