繁体   English   中英

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

[英]How can I specify the default MimeType returned by a REST resource with Jersey

我正在创建REST接口,并具有资源“数据”。 现在,我希望用户可以指定他希望数据是XML还是JSON。 因此,我为同一路径创建了两个方法,一个方法产生application / xml,另一个方法产生application / json。 一切正常,但是如果用户未设置“ Accept”标头字段,我如何指定应返回的内容?

我的测试表明,它并不总是相同的。 昨天默认值为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

@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方法。 如果两者均可接受,则将选择前者,因为它首先出现。

@生产

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM