JAX-RS简介

JAX-RS简介

参考网址:https://www.ibm.com/developerworks/cn/web/wa-aj-tomcat/

了解概念

  1. 现在知道了WebService原来有两种方式,一是SOAP协议方式,在这种方式下需要WSDL,UDDI等,二是REST方式

  2. 首先,REST是一种标准,系统中的每一个对象或是资源都可以通过一个唯一的 URI 来进行寻址,URI 的结构应该简单、可预测且易于理解,比如定义目录结构式的 URI。

  3. 为了简化使用Java开发RESTful WebService及其客户端,一个轻量级的标准被提出:JAX-RS API。JAX-RS是JAVA EE6 引入的一个新技术。 JAX-RS即Java API for RESTful Web Services,是一个Java 编程语言的应用程序接口,JAX-RS提供了一些注解将一个资源类,一个POJO Java类,封装为Web资源。使得 Java 程序员可以使用一套固定的接口来开发 REST 应用,避免了依赖于第三方框架。同时,JAX-RS 使用 POJO 编程模型和基于标注的配置,并集成了 JAXB,从而可以有效缩短 REST 应用的开发周期。
    JAX-RS 定义的 API 位于 javax.ws.rs 包中。JAX-RS 的具体实现由第三方提供

    目前JAX-RS的实现包括:

    1. Apache CXF,开源的Web服务框架。
    2. Jersey, 由Sun提供的JAX-RS的参考实现。
    3. RESTEasy,JBoss的实现。
    4. Restlet,由Jerome Louvel和Dave Pawson开发,是最早的REST框架,先于JAX-RS出现。
    5. Apache Wink,一个Apache软件基金会孵化器中的项目,其服务模块实现JAX-RS规范
  4. cxf实现起来跟普通的endpoint差不多,但是不是直接调用函数,而是使用HTTP的GET,POST,DELETE方法当做命令执行操作,操作的对象是存在于/xxx/xxxx/下的资源。

资源定义

  1. Web 资源作为一个 Resource 类来实现,对资源的请求由 Resource 方法来处理。Resource 类或 Resource 方法被打上了 Path 标注,Path 标注的值是一个相对的 URI 路径,用于对资源进行定位,路径中可以包含任意的正则表达式以匹配资源。和大多数 JAX-RS 标注一样,Path 标注是可继承的,子类或实现类可以继承超类或接口中的 Path 标注。

  2. Resource 类是 POJO,使用 JAX-RS 标注来实现相应的 Web 资源。Resource 类分为根 Resource 类和子 Resource 类,区别在于子 Resource 类没有打在类上的 Path 标注。Resource 类的实例方法打上了 Path 标注,则为 Resource 方法或子 Resource 定位器,区别在于子 Resource 定位器上没有任何 @GET、@POST、@PUT、@DELETE 或者自定义的 @HttpMethod。

@Path("/")
public class BookkeepingService {
   ......
   @Path("/person/")
   @POST
   @Consumes("application/json")
   public Response createPerson(Person person) {
       ......
   }
 
   @Path("/person/")
   @PUT
   @Consumes("application/json")
   public Response updatePerson(Person person) {
       ......
   }
 
   @Path("/person/{id:\\d+}/")
   @DELETE
   public Response deletePerson(@PathParam("id")
   int id) {
       ......
   }
 
   @Path("/person/{id:\\d+}/")
   @GET
   @Produces("application/json")
   public Person readPerson(@PathParam("id")
   int id) {
       ......
   }
 
   @Path("/persons/")
   @GET
   @Produces("application/json")
   public Person[] readAllPersons() {
       ......
   }
 
   @Path("/person/{name}/")
   @GET
   @Produces("application/json")
   public Person readPersonByName(@PathParam("name")
   String name) {
       ......
  }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值