最近重新整理了一下代码,把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
分享到:
相关推荐
**标题与描述解析:** 标题"jax-rs jax-ws所需包,亲测可用"表明这个压缩包包含了用于开发...通过以上步骤,开发者可以快速搭建一个能正确处理JAX-RS和JAX-WS服务的环境,无需手动解决依赖问题,大大提高了开发效率。
标题中的“一个包含jax-ws和jax-rs的例子(含服务端和客户端)”是指这是一个示例项目,它演示了如何使用Java API for XML Web Services (JAX-WS)和Java API for RESTful Web Services (JAX-RS)来创建和消费Web服务。...
Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准接口,用于创建和消费Web服务。它是Sun Microsystems在2004年推出的一个重要框架,旨在简化Web服务的开发,使得Java开发者能够更方便地实现基于SOAP...
[奥莱理] 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 ...
7. **其他依赖**:除了上述核心组件外,"JAX-RS-Lib"可能还包括其他必要的依赖,如XML解析库(如JAXB,用于对象到XML的绑定),JSON库(如Jackson或Gson,用于处理JSON数据),以及HTTP连接管理库(如Apache ...
2. **JAX-RS示例**:可能提供了一个或多个使用JAX-RS创建的REST服务示例,演示了如何定义资源类、处理HTTP请求和响应,以及如何与其他Java EE组件集成。 3. **Maven配置**:由于提到了"Maven build",所以这个资源...
RESTlet是一个知名的JAX-RS实现框架,它提供了一种灵活的方式去构建和部署REST服务。 **知识点**: 1. **JAX-RS基础**:JAX-RS是Java标准JSR 311和JSR 339的一部分,用于简化创建RESTful Web服务。它通过注解如`@...
**JAX-RS与REST接口实例...总结,这个JAX-RS和REST的实例展示了如何通过Java实现RESTful Web服务,包括服务端的资源类定义、服务启动类以及客户端的调用。理解并掌握这些知识对于开发基于HTTP的分布式应用至关重要。
总结来说,JAX-RS是Java开发REST服务的标准API,通过其提供的注解和接口,开发者可以高效、简洁地构建RESTful服务。本压缩包包含的1.0和1.4版本,代表了JAX-RS在不同时间点的发展状态,可以供开发者根据项目需求选择...
总的来说,"JAX-RS Rest RestLet项目源码"为学习者提供了一个很好的起点,让他们能够动手构建自己的REST服务,并理解RESTful架构的核心概念。通过这个项目,不仅可以学习到JAX-RS的API,还能熟悉RESTLet框架的特性,...
- `javax.ws.rs-api`:JAX-RS的核心API,定义了基本的注解和接口。 - `jersey-server`和`jersey-container-servlet`:Jersey是JAX-RS的一个实现,提供了服务器端的实现和支持。 - `jersey-client`:Jersey的客户端...
例如,通过Spring Boot可以快速搭建一个集成了JAX-RS的REST服务应用,同时利用Spring的强大功能来处理复杂业务逻辑和数据操作。开发者可以根据需求选择适合的工具和框架,以提高开发效率和代码质量。
JAX-RS 2.1规范的最终版发布于2017年7月13日,由编辑Pavel Bucek和Santiago Pericas-Geertsen负责,可通过邮件组jaxrs-spec@javaee.groups.io进行评论反馈。该规范的发布由Oracle Corporation支持,它进一步强化了...
标题“JAX-RS-FileUpload-Jersey-Example”暗示了我们将集中讨论如何利用这两个强大的工具来创建一个RESTful服务,允许用户通过HTTP请求上传文件。首先,让我们了解一下JAX-RS和Jersey的基本概念。 **JAX-RS简介** ...
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...
《RESTful Java with JAX-RS 2.0》是一本专注于Java语言在构建RESTful服务方面的专著。作者Bill Burke以其在Java技术方面的深厚底蕴和对RESTful架构的深刻理解,引领读者深入理解并掌握JAX-RS 2.0标准。 书中首先...
在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,主要分为SOAP(Simple Object Access Protocol)和REST(Representational State Transfer)两种类型。本篇将详细介绍如何使用Java技术栈,特别是JAX-WS...
在"jax-rs开发实例(bookkeeping)"中,我们将深入探讨如何利用JAX-RS构建一个简单的会计记录管理系统。这个实例可能包括创建、读取、更新和删除(CRUD)会计记录的REST接口,展示了RESTful服务的核心概念。 首先,...