`
lz726
  • 浏览: 335100 次
  • 性别: Icon_minigender_2
  • 来自: 福建,福州
社区版块
存档分类
最新评论

RESTful 风格

 
阅读更多

英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。

目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。

目录

  • 1 宗旨
  • 2 要点及标准
    • 2.1 REST的要求
    • 2.2 关于状态
    • 2.3 RESTful Web 服务
  • 3 实现举例
  • 4 REST的优点
  • 5 实现
  • 6 参考资料

宗旨

REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表徵。获得这些表徵致使这些应用程序转变了其状态。随着不断获取资源的表徵,客户端应用不断地在转变着其状态,所谓表徵狀態轉移(Representational State Transfer)。

这一观点不是凭空臆造的,而是通过观察当前Web互联网的运作方式而抽象出来的。Roy Fielding 认为,

设计良好的网络应用表现为一系列的网页,这些网页可以看作的虚拟的状态机,用户选择这些链接导致下一网页传输到用户端展现给使用的人,而这正代表了状态的转变。

要点及标准

需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。

  • 资源是由URI来指定。
  • 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
  • 通过操作资源的表现形式来操作资源。
  • 资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。

REST的要求

  • 客户端和服务器结构
  • 连接协议具有无状态性
  • 能够利用Cache机制增进性能
  • 层次化的系统
  • 隨需代碼 - Javascript (可選)

关于状态

应该注意区别应用的状态和连接协议的状态。REST对于连接的无状态性实际上要求每次經過无状态的连接协议传送的信息必須包含应用中所有的状态信息。

RESTful Web 服务

RESTful Web 服务(也称为 RESTful Web API)是一个使用HTTP并遵循REST原则的Web服务。它从以下三个方面资源进行定义:

  • URI,比如:http://example.com/resources/
  • Web服务接受与返回的互联网媒体类型,比如:JSON,XML ,YAML 等。
  • Web服务在该资源上所支持的一系列请求方法(比如:POST,GET,PUT或DELETE)。

该表列出了在实现RESTful Web 服务时HTTP请求方法的典型用途。

HTTP 请求方法在RESTful Web 服务中的典型应用[1] 资源 GET PUT POST DELETE 一组资源的URI,比如http://example.com/resources/ 单个资源的URI,比如http://example.com/resources/142
列出 URI,以及该资源组中每个资源的详细信息(后者可选)。 使用给定的一组资源替换当前整组资源。 在本组资源中创建/追加一个新的资源。 该操作往往返回新资源的URL。 删除 整组资源。
获取 指定的资源的详细信息,格式可以自选一个合适的网络媒体类型(比如:XML、JSON等) 替换/创建 指定的资源。并将其追加到相应的资源组中。 把指定的资源当做一个资源组,并在其下创建/追加一个新的元素,使其隶属于当前资源。 删除 指定的元素。

PUT 和 DELETE 方法是幂等方法。GET方法是安全方法 (不会对服务器端有修改,因此也是幂等的)。

不像基于SOAP的Web服务,RESTful Web服务并没有的“正式”标准[2]。 这是因为REST是一种架构,而SOAP只是一个协议。虽然REST不是一个标准,但在实现RESTful Web服务时可以使用其他各种标准(比如HTTP,URL,XML,PNG等)。

实现举例

例如,一个简单的网络商店应用,

列举所有商品,

GET http://www.store.com/products

具体某一件商品,

GET http://www.store.com/product/12345

下单购买,

POST http://www.store.com/order
<purchase-order>
  <item> ... </item>
</purchase-order>

REST的优点

  • 可以利用缓存Cache来提高响应速度
  • 通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
  • 浏览器即可作为客户端,简化软件需求
  • 相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
  • 不需要额外的资源发现机制
  • 在软件技术演进中的长期的兼容性更好

来源:http://zh.wikipedia.org/wiki/REST

参考文献:http://www.restfulwebservices.cn/

分享到:
评论

相关推荐

    Restful风格编程面试题

    Restful风格编程面试题 Restful风格编程简介 Restful风格编程是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更...

    vue 调用 RESTful风格接口操作

    本篇文章将详细介绍如何在Vue项目中调用RESTful风格的接口。 REST(Representational State Transfer)是一种软件架构风格,用于设计网络应用程序。它强调通过HTTP方法(GET、POST、PUT、DELETE)来对应不同的操作...

    httpclient和RestfuL风格上传下载文件

    在Java开发中,HTTPClient和RESTful风格的接口被广泛用于实现文件的上传与下载功能。HTTPClient是一个强大的HTTP客户端库,而RESTful是一种轻量级的、基于HTTP协议的软件架构风格,常用于构建Web服务。在分布式系统...

    SpringMVC的Restful风格Demo

    在SpringMVC中实现RESTful风格,可以创建更加灵活、易于理解和维护的API。让我们深入探讨一下SpringMVC如何实现RESTful风格以及相关知识点。 首先,理解RESTful的基本原则至关重要。REST(Representational State ...

    springmvc之restful风格CRUD

    本文将深入探讨如何在Spring MVC中实现RESTful风格的CRUD操作,这对初学者尤其有价值。 首先,了解REST(Representational State Transfer,表述性状态转移)是一种网络应用程序的设计风格和开发方式,基于HTTP协议...

    servlet_restful风格所需jar包

    在开发基于Servlet的应用时,尤其是涉及RESTful风格的API,依赖于正确的库是至关重要的。RESTful风格是一种软件架构设计模式,它强调通过HTTP方法(如GET、POST、PUT、DELETE)来操作资源,实现轻量级、无状态的交互...

    Http请求Restful风格的远程调用工具类

    Http请求Restful风格的远程调用,在远程调用的过程中会出现四种请求方式,这个工具把此部分代码给封装了一下。

    restful风格webservice代码

    在本项目中,"restful风格webservice代码"是一个商业项目测试用的源代码实现,它展示了如何利用RESTful原则来构建Web服务,同时包含了JSON数据的压缩解压以及加密解密功能。 REST(Representational State Transfer...

    SpringMVC RESTFUL风格

    ### SpringMVC RESTFUL风格详解 #### 一、RESTFUL风格概述 RESTFUL(Representational State Transfer)风格是一种用于客户端和服务端交互的设计理念而非具体的技术实现。它通过一组设计原则和约束条件,使得构建...

    一个Delphi实现的HttpServer,支持RESTful风格路由

    本项目就是一个用Delphi实现的HTTP服务器,它特别强调了对RESTful风格路由的支持。 REST(Representational State Transfer)是一种软件架构风格,用于设计网络应用程序,尤其适用于Web服务。其核心思想是通过HTTP...

    在同一个系统里用cxf 实现SOAP 协议和RESTful风格 两种类型的webservice接口

    接下来,我们讨论RESTful风格的Web服务。REST是一种轻量级的架构风格,它利用HTTP协议的基本操作(GET、POST、PUT、DELETE等)来操作资源。在CXF中实现RESTful接口,我们需要: 1. 定义资源类:创建一个Java类,该...

    自己对RESTful风格的理解

    在这个例子中,可以通过定义一个控制器方法,使用@RequestMapping注解来映射一个符合RESTful风格的URL路径。在URL中,可以通过使用{username}和{password}这样的路径变量来传递参数。在控制器方法中,可以使用@...

    用CXF开发RESTful风格WebService

    用CXF开发RESTful风格WebService.doc

    RESTful风格的Java后台管理系统开发平台,前后端分离模式,前端采用路由单页面模式.rar

    在IT行业中,RESTful风格的Java后台管理系统开发平台是一种常见的技术架构,尤其在现代Web应用中广泛应用。这种架构模式强调了清晰的接口设计、松耦合的系统组件以及高效的资源管理,使得前后端的开发更加独立,提高...

    spring4+myabtis3+jersey(restful风格的webservice)

    本项目基于Spring4、MyBatis3和Jersey构建了一个RESTful风格的Web服务框架,旨在提供高效、灵活且易于维护的API接口。RESTful架构是一种面向资源的Web服务设计风格,强调简洁、统一的接口,使得客户端与服务器之间的...

    python开发,基于flask-restful 的中小型项目,restful风格API接口开发实例,以mongodb作为数据库

    python开发,基于flask-restful 的中小型项目,restful风格API接口开发实例,以mongodb作为数据库 python开发,基于flask-restful 的中小型项目,restful风格API接口开发实例,以mongodb作为数据库python开发,基于...

    基于Spring Boot为主线的技术栈,采用RESTful风格架构的微信点餐系统.zip

    基于Spring Boot为主线的技术栈,采用RESTful风格架构的微信点餐系统 基于Spring Boot为主线的技术栈,采用RESTful风格架构的微信点餐系统 基于Spring Boot为主线的技术栈,采用RESTful风格架构的微信点餐系统 基于...

    基于Spring Boot,采用RESTful风格架构的微信点餐系统源码(高分毕设).zip

    基于Spring Boot,采用RESTful风格架构的微信点餐系统源码(高分毕设).zip 基于Spring Boot,采用RESTful风格架构的微信点餐系统源码(高分毕设).zip 基于Spring Boot,采用RESTful风格架构的微信点餐系统源码...

    restful风格请求,token鉴权实例

    在IT行业中,RESTful风格的API设计已经成为现代Web服务的标准,它强调资源的表述状态转移。本实例将探讨如何在Spring Boot框架下实现RESTful风格的请求,并利用JWT(JSON Web Token)进行权限验证,同时结合自定义...

Global site tag (gtag.js) - Google Analytics