JAX-RS简介
参考网址:https://www.ibm.com/developerworks/cn/web/wa-aj-tomcat/
了解概念
现在知道了WebService原来有两种方式,一是SOAP协议方式,在这种方式下需要WSDL,UDDI等,二是REST方式
首先,REST是一种标准,系统中的每一个对象或是资源都可以通过一个唯一的 URI 来进行寻址,URI 的结构应该简单、可预测且易于理解,比如定义目录结构式的 URI。
为了简化使用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的实现包括:
- Apache CXF,开源的Web服务框架。
- Jersey, 由Sun提供的JAX-RS的参考实现。
- RESTEasy,JBoss的实现。
- Restlet,由Jerome Louvel和Dave Pawson开发,是最早的REST框架,先于JAX-RS出现。
- Apache Wink,一个Apache软件基金会孵化器中的项目,其服务模块实现JAX-RS规范
cxf实现起来跟普通的endpoint差不多,但是不是直接调用函数,而是使用HTTP的GET,POST,DELETE方法当做命令执行操作,操作的对象是存在于/xxx/xxxx/下的资源。
资源定义
Web 资源作为一个 Resource 类来实现,对资源的请求由 Resource 方法来处理。Resource 类或 Resource 方法被打上了 Path 标注,Path 标注的值是一个相对的 URI 路径,用于对资源进行定位,路径中可以包含任意的正则表达式以匹配资源。和大多数 JAX-RS 标注一样,Path 标注是可继承的,子类或实现类可以继承超类或接口中的 Path 标注。
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) {
......
}
}