最近重新整理了一下代码,把java实现REST api的几种框架和方法记录下来。
1.什么是REST
Representational state transfer (REST) Web Service:
它是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。在目前三种主流的Web Service实现方案中,因为REST与SOAP和XML-RPC相比显的更加简洁,因此越来越多的Web Service开始采用REST风格设计和实现。
REST 描述了一个架构样式的互联系统(如 Web 应用程序)。REST 约束条件作为一个整体应用时,将生成一个简单、可扩展、有效、安全、可靠的架构。由于它简便、轻量级以及通过 HTTP 直接传输数据的特性,RESTful Web 服务成为基于 SOAP 服务的一个最有前途的替代方案。用于 web 服务和动态 Web 应用程序的多层架构可以实现可重用性、简单性、可扩展性和组件可响应性的清晰分离。开发人员可以轻松使用 Ajax 和 RESTful Web 服务一起创建丰富的界面。
RESTful的关键是定义可表示流程元素/资源的对象。在REST中,每一个对象都是通过URL来表示的,对象用户负责将状态信息打包进每一条消息内,以便对象的处理总是无状态的。
一些关于REST的资料如下:
RESTful 真正意味着什么?
2.JAX-RS
JAX-RS是JAVA EE6 引入的一个新技术(JSR311: JAX-RS: The Java API for RESTful Web Services)。 JAX-RS即Java API for RESTful Web Services,是一个Java 编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建Web服务。JAX-RS使用了Java SE5引入的Java标注来简化Web服务的客户端和服务端的开发和部署。
标注包括:
@Path,标注资源类或者方法的相对路径
@GET,@PUT,@POST,@DELETE,标注方法是HTTP请求的类型。
@Produces,标注返回的MIME媒体类型
@Consumes,标注可接受请求的MIME媒体类型
@PathParam,@QueryParam,@HeaderParam,@CookieParam,@MatrixParam,@FormParam,分别标注方法的参数来自于HTTP请求的不同位置,例如@PathParam来自于URL的路径,@QueryParam来自于URL的查询参数,@HeaderParam来自于HTTP请求的头信息,@CookieParam来自于HTTP请求的Cookie。
基于java开发的REST框架基本都遵循JAX-RS规范,支持注解方式声明REST。
3.API设计
Restful样式的接口将功能抽象为资源resource路径映射,以HTTP GET /resource/{id} 的方式访问。主要分为以下几类接口:
地址 | 请求方法 | 说明 |
/resources | GET | 获取所有资源 |
/resources | POST | 创建新资源,content中包含资源内容 |
/resource/{id} | GET | 获取编号为id的资源 |
/resource/{id} | PUT | 更新编号为id的资源,content中包含资源内容 |
/resource/{id} | DELETE | 删除编号为id的资源 |
{id}称为路径变量,告诉restful你要对哪个资源进行查、改、删。
接口一般返回json/xml格式数据,方便服务端程序、浏览器脚本调用接口并处理返回数据。
具体设计时需要注意很多细节,可参考以下资料:
RESTful API 设计指南
RESTful API 设计最佳实践
4.实现框架
基于java的常用开源REST框架有以下几种:
- Spring MVC
- Jersey
- RESTEasy
- Restlet
- Apache CXF
见
Spring REST WS : jersey vs resteasy vs restlet vs apache cxf vs Spring WS
各框架都支持JAX-RS注解。后面将分节介绍各种框架实现细节。
5.Spring MVC实现REST
基于spring4+springmvc实现REST的示例,见springmvc系列
spring mvc(六)实现REST接口GET/POST/PUT/DELETE
分享到:
相关推荐
[奥莱理] RESTful Java 开发 (Jax-RS 实现) (英文版) [奥莱理] RESTful Java with Jax-RS (E-Book) ☆ 图书概要:☆ Learn how to design and develop distributed web services in Java using RESTful ...
With the book’s technical guide, you’ll learn how REST and JAX-RS work and when to use them. The RESTEasy workbook that follows provides step-by-step instructions for installing, configuring, and ...
JAX-RS REST helloworld 项目源码 下载后引入eclipse jee 启动tomcat可直接访问 访问路径为http://localhost:8080/AndroidJAX-RS/jaxrs/helloworld/html
JAX-RS(JSR 311)指的是Java API for RESTful Web Services,Roy Fielding也参与了JAX-RS的制订,他在自己的博士论文中定义了REST。对于那些想要构建RESTful Web Services的开发者来说,JAX-RS给出了不同于JAX-WS...
JAX-RS Rest RestLet项目源码 对初学者有帮助 实现最简单的 GET PUT DELETE UPDATE
jax-rs 2.1规范最终版,英文原版。jax-rs规范定义了java平台Rest调用风格的WebService接口。
web service rest(jax-rs)整合完整的Jax-rs组件包,内含2个版本,分别是1.0和1.4版本。
JavaWeb服务SOAP(jax-ws)和REST(jax-rs)规范,CXF整合Spring和未整合Spring的简单例子。结合说明看,简单易懂:my.oschina.net/lock0818/blog/314120
REST Jersey项目源码,测试通过,精通REST java JAX-RS技术必读!
jax-rs官方实例,对大家学习restful开发会有很大启发。
com.rest.restlet.RestJaxRsServer 服务启动类 com.rest.restlet.client.Client 客户端调用类 eclipse项目直接使用。
JAX-RS-messanger-服务 使用JAX-RS的消息传递REST服务
基于 REST JAX-RS CXF 的 API 示例 REST JAX-RS CXF Spring 最佳实践模板。 描述 从非持久内存数据存储中添加、检索和删除存储的示例应用程序。 PUT - 使用客户端提供的 ID 添加或更新存储 GET - 获取商店 DELETE -...
JAX-RS即Java API for RESTful Web Services,是一个Java 编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建Web服务。JAX-RS使用了Java SE5引入的Java标注来简化Web服务的客户端和服务端的开发...
REST 软件架构基于具象资源传输。RESTful Web 服务提供了一些优势:简单、轻量级、快速。RESTful Web 服务公开了一组由 URI 标识的资源。资源将根据 HTTP 方法 GET、POST、PUT 和 DELETE 作出响应。资源可通过各种...
REST 的日益兴起为 web services 开发提供了新的方式。这次包含的 JAX-RS 与先前的 JAX-WS 地位相当,表示 Java EE 也认可 REST 是一种趋势。与 JAX-WS 的出发点一致, JAX-RS 也远离了 SOAP 协议的底层细节。
Developing RESTful Services with JAX-RS 2.0, WebSockets, and JSON is a practical, hands-on guide that provides you with clear and pragmatic information to take advantage of the real power behind ...
Pro RESTful APIs Design Build and Integrate with REST JSON XML and JAX-RS 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn...