【问题标题】:How can I specify the default MimeType returned by a REST resource with Jersey如何使用 Jersey 指定 REST 资源返回的默认 MimeType
【发布时间】:2013-11-27 17:10:41
【问题描述】:

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

干杯,

金属仓鼠

【问题讨论】:

    标签: rest jersey


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-12
      • 2012-11-30
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      • 2011-11-19
      • 2016-11-04
      • 1970-01-01
      相关资源
      最近更新 更多