@Produces注解

4 篇文章 0 订阅

《Java RESTful Web Service实战(第2版)》第2章REST API设计,本章是REST理论和Jersey实践的核心章节,详细讲述了HTTP方法与REST API的统一接口设计、URI的REST风格设计,并逐个讲述了JAX-RS2定义的注解如何支持资源定位,还对Jersey对各种表述类型的支持和实现、Jersey对REST连通性的两种实现、REST资源方法对响应的处理以及Jersey对内容协商的支持和实现进行了讲述。本节为大家介绍@Produces注解。


注解@Produces 用于定义方法的响应实体的数据类型,可以定义一个或多个,同时可以为每种类型定义质量因素(qualityfactor) 。质量因素是取值范围从0到1的小数值。如果不定义质量因素,那么该类型的质量因素默认为1。我们将结合示例深入了解@Produces注解对媒体类型的影响,示例代码如下。

@Path("conneg-resource")  
public class ConnegResource {  
  @GET  
  @Path("{id}")  
  //关注点1:媒体类型为XML  
  @Produces(MediaType.APPLICATION_XML)  
  public Book getJaxbBook(@PathParam("id") final Long bookId) {  
      return new Book(bookId);  
  }  

  @GET  
  @Path("{id}")  
  //关注点2:媒体类型为JSON  
  @Produces(MediaType.APPLICATION_JSON)  
  public Book getJsonBook(@PathParam("id") final Long bookId) {  
      return new Book(bookId);  
  }  
} 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

在这段代码中,getJaxbBook()和getJsonBook()是同等质量因素、资源地址相同的两个GET方法,一个定义响应实体格式为XML,一个定义响应实体格式为JSON,见关注点1和2。那么对同一个资源的访问,JAX-RS2该如何选择处理方法呢?如果请求中明确定义可接受的数据类型为两者之一,处理方法应该是定义相应数据类型的方法。如果两者都定义了,处理方法应该是质量因素高的方法。如果两者都定义,而且数据类型的质量因素是相等的或者没有定义Accept,XML的方法会被优先选择。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值