Restful Web服务是一种基于 REST 和 HTTP 协议的轻量级Web 服务,它把Web应用系统中的一切都当作是资源,它利用标准的HTTP请求方法(GET、POST、PUT 和 DELETE等),以URL的形式访问(功能调用)Web资源。
JAVA中共有三种Web Service规范,分别JAX-WS(JAX-RPC)、JAX-RS、JAXM&SAAJ。其中有两种SOAP Web Service规范:JAX-WS和SAAJ。JAX-RS是Rest服务定义。使用最多的是JAX-WS和JAX-RS。
JAX-RS (JSR 311) | JAX-WS (JSR 224) | |
适用范围 | 适用于简单的远程数据访问 | 适用于复杂的数据交互模式 |
消息传输 | 请求和响应通过 HTTP 消息正文来传输 | 请求和响应被放在 SOAP 消息,作为传输层(HTTP, JMS, SMTP 等)消息正文进行传输 |
客户端调用 | 只需要一个 URL就能调用 Web 服务 | 需要编写标准的客户端代码,对 Web Services进行访问 |
安全性 | 简单的认证和授权机制 | 丰富的安全策略,可实现各种安全需求 |
访问终端 | 桌面浏览器或移动终端浏览器 | 桌面、浏览器 |
Java EE6引入了对JSR-311的支持。JSR-311(JAX-RS:Java API for RESTful Web Services)旨在定义一个统一的规范,使得 Java 程序员可以使用一套固定的接口来开发 REST 应用,避免了依赖于第三方框架。同时,JAX-RS使用POJO编程模型和基于标注的配置,并集成JAXB,从而可以有效缩短 REST 应用的开发周期。
JAX-RS定义的API位于javax.ws.rs包中。
JAX-RS的具体实现由第三方提供,例如Sun的参考实现 Jersey、Apache 的 CXF以及JBoss的RESTEasy等。
SOAP比较复杂,基于XML,有对应规范;REST利用HTTP请请求方式GET,POST,PUT约定事务操作。简单的说,SOAP通过传输XML,XML定义了请求和响应的具体数据,要进行的操作等等;而REST则是另一种约定,比如请求/user/1001这个RUL,GET方式返回id为1001的user信息,POST方式则是更新id为1001的user信息,DELETE删除等。