`
sb33060418
  • 浏览: 152290 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

REST(一)REST和JAX-RS

    博客分类:
  • REST
阅读更多
最近重新整理了一下代码,把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} 的方式访问。主要分为以下几类接口:
地址请求方法说明
/resourcesGET获取所有资源
/resourcesPOST创建新资源,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-RS和JAX-WS服务的环境,无需手动解决依赖问题,大大提高了开发效率。

    一个包含jax-ws和jax-rs的例子(含服务端和客户端)

    标题中的“一个包含jax-ws和jax-rs的例子(含服务端和客户端)”是指这是一个示例项目,它演示了如何使用Java API for XML Web Services (JAX-WS)和Java API for RESTful Web Services (JAX-RS)来创建和消费Web服务。...

    JAX-WS API, JAX-RS API

    Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准接口,用于创建和消费Web服务。它是Sun Microsystems在2004年推出的一个重要框架,旨在简化Web服务的开发,使得Java开发者能够更方便地实现基于SOAP...

    [Jax-RS] RESTful Java 开发 (Jax-RS 实现) (英文版)

    [奥莱理] RESTful Java 开发 (Jax-RS 实现) (英文版) [奥莱理] RESTful Java with Jax-RS (E-Book) ☆ 图书概要:☆ Learn how to design and develop distributed web services in Java using RESTful ...

    [Jax-RS] RESTful Java 开发 (Jax-RS 2.0 实现) (英文版)

    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所需要的依赖jar

    7. **其他依赖**:除了上述核心组件外,"JAX-RS-Lib"可能还包括其他必要的依赖,如XML解析库(如JAXB,用于对象到XML的绑定),JSON库(如Jackson或Gson,用于处理JSON数据),以及HTTP连接管理库(如Apache ...

    SpringMVC精品资源--JAX-RS & SpringMVC supported maven buil.zip

    2. **JAX-RS示例**:可能提供了一个或多个使用JAX-RS创建的REST服务示例,演示了如何定义资源类、处理HTTP请求和响应,以及如何与其他Java EE组件集成。 3. **Maven配置**:由于提到了"Maven build",所以这个资源...

    JAX-RS Extension

    RESTlet是一个知名的JAX-RS实现框架,它提供了一种灵活的方式去构建和部署REST服务。 **知识点**: 1. **JAX-RS基础**:JAX-RS是Java标准JSR 311和JSR 339的一部分,用于简化创建RESTful Web服务。它通过注解如`@...

    JAX-RS之rest接口实例

    **JAX-RS与REST接口实例...总结,这个JAX-RS和REST的实例展示了如何通过Java实现RESTful Web服务,包括服务端的资源类定义、服务启动类以及客户端的调用。理解并掌握这些知识对于开发基于HTTP的分布式应用至关重要。

    JAX-RS包(内含1.0和1.4)

    总结来说,JAX-RS是Java开发REST服务的标准API,通过其提供的注解和接口,开发者可以高效、简洁地构建RESTful服务。本压缩包包含的1.0和1.4版本,代表了JAX-RS在不同时间点的发展状态,可以供开发者根据项目需求选择...

    JAX-RS Rest RestLet项目源码

    总的来说,"JAX-RS Rest RestLet项目源码"为学习者提供了一个很好的起点,让他们能够动手构建自己的REST服务,并理解RESTful架构的核心概念。通过这个项目,不仅可以学习到JAX-RS的API,还能熟悉RESTLet框架的特性,...

    JAX-RS入门jar包集合

    - `javax.ws.rs-api`:JAX-RS的核心API,定义了基本的注解和接口。 - `jersey-server`和`jersey-container-servlet`:Jersey是JAX-RS的一个实现,提供了服务器端的实现和支持。 - `jersey-client`:Jersey的客户端...

    JAX-RS+spring

    例如,通过Spring Boot可以快速搭建一个集成了JAX-RS的REST服务应用,同时利用Spring的强大功能来处理复杂业务逻辑和数据操作。开发者可以根据需求选择适合的工具和框架,以提高开发效率和代码质量。

    jax-rs 2.1规范最终版-英文

    JAX-RS 2.1规范的最终版发布于2017年7月13日,由编辑Pavel Bucek和Santiago Pericas-Geertsen负责,可通过邮件组jaxrs-spec@javaee.groups.io进行评论反馈。该规范的发布由Oracle Corporation支持,它进一步强化了...

    JAX-RS-FileUpload-Jersey-Example

    标题“JAX-RS-FileUpload-Jersey-Example”暗示了我们将集中讨论如何利用这两个强大的工具来创建一个RESTful服务,允许用户通过HTTP请求上传文件。首先,让我们了解一下JAX-RS和Jersey的基本概念。 **JAX-RS简介** ...

    JAX-RS REST helloworld 项目源码

    JAX-RS REST helloworld 项目源码 下载后引入eclipse jee 启动tomcat可直接访问 访问路径为http://localhost:8080/AndroidJAX-RS/jaxrs/helloworld/html

    Spring MVC与JAX-RS比较与分析

    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

    《RESTful Java with JAX-RS 2.0》是一本专注于Java语言在构建RESTful服务方面的专著。作者Bill Burke以其在Java技术方面的深厚底蕴和对RESTful架构的深刻理解,引领读者深入理解并掌握JAX-RS 2.0标准。 书中首先...

    jax-ws jax-rs 分别创建soap和restful类型的webservice

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,主要分为SOAP(Simple Object Access Protocol)和REST(Representational State Transfer)两种类型。本篇将详细介绍如何使用Java技术栈,特别是JAX-WS...

    jax-rs开发实例(bookkeeping)

    在"jax-rs开发实例(bookkeeping)"中,我们将深入探讨如何利用JAX-RS构建一个简单的会计记录管理系统。这个实例可能包括创建、读取、更新和删除(CRUD)会计记录的REST接口,展示了RESTful服务的核心概念。 首先,...

Global site tag (gtag.js) - Google Analytics