REST是一种软件架构模式,只是一种风格,不是像SOAP那样本身承载着一种消息协议,(两种风格的web服务均采用HTTP做传输协议是因为HTTP协议能穿越防火墙,JAVA的远程调用RMI等是重量级协议,不能穿越防火墙),因此你也可以叫做REST是基于HTTP协议的软件架构。REST中重要的两个概念就是资源定位和资源操作,而HTTP协议恰好完整的提供了这两个要点,HTTP协议中的URI可以完成资源定位,GET、POST、OPTION等方法可以完成资源操作,因此REST完全依赖HTTP协议就可以完成Web服务,而不像SOAP协议那样只利用HTTP的传输特性,定位与操作由SOAP协议自身完成,也正是由于SOAP消息的存在,使得SOAP笨重。你也可以说REST充分利用了HTTP协议的特性,而不是像SOAP那样只利用了其传输这一特性(事实上大多数人提到HTTP协议就只会想到他能用于数据传输)。
REST对于HTTP的利用分为以下两种:首先是资源定位,这就是URI,这本身没有什么特别的,但要注意REST对HTTP的资源定位理解更加到位,也就是你的Web服务的URI要能足够表意,例如http://www.fetion.com.cn/fetionwap/baby/getBabyInfoById?id=1,从URI上可以看出这个Web服务定位到的资源是查询飞信WAP宠物的信息,依据参数id值查询。那么可以继续出现以下层级:
http://www.fetion.com.cn/fetionwap/baby/storeroom/getStoreRoomById?id=1
http://www.fetion.com.cn/fetionwap/baby/storeroom/chicken/getCounts?id=1
我们看到REST风格的URI的目录层级足够表意,也就是资源定位,这种定位要求URI是唯一的。因为REST流行于互联网,网上的资源应该有唯一的资源位置(如:如片、视频)。当然,如果你的服务越复杂,URI可能就越长,越难理解,这也算是REST风格的缺点。第二种就是利用HTTP的GET、POST、PUT、DELETE四种操作外加HEAD请求报头完成资源操作,有这几种最简单的操作任意组合就可以完成各种各样的复杂操作,当然这是REST的理念,事实上这样创建应用有点牵强。
REST是一种软件架构理念,现在被移植到Web服务上(因此不要提到REST就马上想到WebService,JAX-RS只是将REST涉及风格应用到Web服务开发),那么在开发Web服务上,偏于面向资源的服务只适用于REST,偏于面向活动的服务。另外,REST简单易用,效率高,SOAP成熟度较高,安全性好。
REST提供的网络服务叫做OpenAPI,它不仅把HTTP作为传输协议,也作为处理数据的工具,可以说对HTTP协议做了较好的诠释,充分体现了HTTP技术的网络能力。目前Google、Amazon、淘宝都有基于REST的OpenAPI提供调用。
JAX-RS的API在javax.ws.rs.*包中,其中大部分也是注解。
我们先看一个较为简单的实例:
(1)IStudentServie.java:
package com.nantian.rest.server; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; @Path(value = "/student/{id}") @Produces("application/xml") public interface IStudentService { @GET @Path(value = "/info") Student getStudent(@PathParam("id") long id, @QueryParam("name") String name); @GET @Path(value = "/info2") Student getStudent(@QueryParam("name") String name); }
相关推荐
jax-rs 2.1规范最终版,英文原版。jax-rs规范定义了java平台Rest调用风格的WebService接口。
web service rest(jax-rs)整合完整的Jax-rs组件包,内含2个版本,分别是1.0和1.4版本。
在ssh架构中加入webservice服务,web服务使用Apache CXF,采用cxf+spring的方式发布web服务
使用jax-ws和jax-rs ,maven、java、spring 分别创建soap类型的webservice和restful类型的webservice,文档附有代码
Java JAX-RS示例 根据MIT许可获得许可。 请参阅文件LICENSE。 Java JAX-RS示例的集合。 示例包括用Java编写的代码。 链接 一般的 -用Java测试和验证REST服务 阿帕奇 (实现JAX-RS等)
春天 使用 Apache CXF 和 Spring Framework 的 WebService(JAX-WS 和 JAX-RS) Apache CXF: : Spring 框架: : 我想分享有关使用 Spring Framework 的 Web 服务的更多信息。
餐厅预订服务器端使用Jersey Jax-RS的餐厅应用程序的Java后端描述我们已经为餐厅预订Web应用程序实现了Java后端我们使用的技术: Java 1.8 玻璃鱼球衣Jax-RS 冬眠MySQL的JUnit的邮差笔记: 我们还提供了一些使用...
这个教程将了如何使用CXF开发WebService,包括JAX-WS、JAX-RS规范、数字证书、MTOM附件传输、异步调用、异常处理、使用Axis+Spring解决RPC/Encode的问题向旧规范JAX-RPC的兼容,第三版版教程在最一开始分别介绍了...
信使休息 使用JAX-RS休息Web服务。 球衣。
弹簧靴骆驼CXF JAXRS快速入门 本示例演示了如何基于将Apache CXF与Spring Boot结合使用。 快速入门使用Spring Boot来配置一个小的应用程序,其中包括启用了Swagger的CXF JAXRS端点。 重要的 该快速入门可以在2种...
DarchetypeGroupId=org.glassfish.jersey.archetypes -DarchetypeArtifactId=jersey-quickstart-webapp -DarchetypeVersion=2.27 -DgroupId=br.nom.penha.bruno.exemplo.jaxrs -DartifactId=exemplo-jaxrs-jersey -B...
第三版已经发布,请到http://download.csdn.net/source/1508705下载!谢谢!
本书以示例驱动的方式详尽地介绍了XML Web服务(JAX-WS)和RESTfulWeb服务(JAX-RS)二者所涵盖的Java相关API。. 《Java Web服务:构建与运行》以清晰、务实的方法讲述Web服务相关技术,提供了混合性的架构总结、...
《Java Web 服务:构建与运行(影印版)》提供了对Java的API的一个全面介绍,包括针对XML Web服务的JAX-WS和针对RESTful Web服务的JAX-RS。《Java Web服务:构建与运行》通过提供混合架构概述、完整的工作代码示例...
This quick, practical, and thorough introduction to Java web services -- the JAX-WS and JAX-RS APIs -- offers a mix of architectural overview, complete working code examples, and short yet precise ...
RESTEasy 项目是 JAX-RS 的一个实现,集成的一些亮点: * 不需要配置文件,只要把JARs文件放到类路径里面,添加 @Path 注解就可以了。 * 完全的把 RESTEeasy 配置作为Seam 组件来看待。 * HTTP 请求由Seam来提供...
mochasoft-framework 摩卡软件的 java 开发框架 ...Restful Service: JAX-RS 1.0 + Jersey/CXF,够标准,但直接使用Spring MVC能使架构更简单 **展现层:**JSP2.0且尽量使用JSP EL而不是taglib,万一要写taglib也用
[JAX-RS 2.0 API] - - Jersey Restful WebService [Servlet3] - Servlet 3 沙发服务弹簧(angular-rest-service) -IOC - - 沙发持久性(angular-rest-dao) - ORM - 内存中的 DB 测试功能 GEB - 非常 Groovy...
本课程讲解CXF的JAX-WS方式开发WebService的服务端和客户端?本课程讲解CXF的JAX-RS注解方式开发WebService的服务端和客户端?本课程讲解SpringBoot整合CXF开发WebService
RS-独立发布 编写服务接口 打上@path配置路径 @get等请求方式 @Produces 生产者@Consumes 消费者 条件中 @PathParam 适用于@path上标识参数类型 客户端需要使用type 条件中 @QueryParam 适用于@path上标识不参数...