`
e-beetle
  • 浏览: 19064 次
  • 性别: Icon_minigender_1
  • 来自: 长春
最近访客 更多访客>>
社区版块
存档分类
最新评论

面向资源的基于网络的架构风格REST

阅读更多

Roy T. Fielding博士是许多基本Web协议的主要设计者, 其中包括HTTP和URIs. Roy在他的博士学位论文中定义了术语REST. REST是一种面向资源的基于网络的架构风格, 全称表述性状态转移(Representational State Transfer). 这个抽象的名字的由来Roy是这样解释的:

The name "Representational State Transfer" is intended to evoke an image of how a well-designed Web application behaves: a network of web pages (a virtual state-machine), where the user progresses through the application by selecting links (state transitions), resulting in the next page (representing the next state of the application) being transferred to the user and rendered for their use.

我的理解是:

符合REST风格的基于网络的架构中, 服务端应用通过提供资源的方式来暴露功能:
1.资源有ID
        如: WEB架构中, URI协议.
2.资源有统一接口
        如: WEB架构中, HTTP动词: get代表"现", 可缓存, 具有幂等性; put代表"变", 具有幂等性; delete代表"灭", 具有幂等性; post代表"生".
3.资源有状态, 资源状态有多重表述
        如: WEB架构中, HTTP内容协商.
4.资源状态表述中要将其他相关资源用资源ID连接起来
        如: WEB架构中, 超媒体被当做应用状态引擎.
5.服务端应用不保存会话状态
        如: WEB架构中, HTTP协议无状态.
客户端与服务端应用交互过程中, 客户端通过资源ID和资源统一接口来请求指定资源的访问. 服务端应用通过返回应用状态表述来响应客户端的请求. 应用状态由存储在服务端的资源状态和保存在客户端的会话状态组成, 而应用状态表述则是附着着会话状态的资源状态表述. 应用状态可以由应用状态表述来表示, 所以被称为Representational State(表述性状态或具象状态).

InfoQ上的一篇文章深入浅出REST中总结了REST的5个关键原则, 可作为实践指导:

1.为所有资源定义ID

2.将所有资源链接在一起

3.使用标准方法

4.资源多重表述

5.无状态通信

另一篇文章解答有关REST的十点疑惑中探讨了如下几个常见问题:

01.REST也许适用于CRUD, 但并不适用于"真实的"业务逻辑

02.没有正式的契约与描述语言

03.谁真会把他们应用中如此多的实现细节暴露出来?

04.REST只能配合HTTP使用, 它不是传输协议无关的

05.没有实际的, 明确且一致的指南教你如何设计REST式应用

06.REST不支持事务

07.REST是不可靠的

08.不支持发布/订阅

09.无异步交互

10.缺少工具

文章在RESTful应用程序中的超媒体深入的讨论了"超媒体即应用状态引擎(hypermedia as the engine of application state)"的含义, 可加深对REST的理解.

 

分享到:
评论

相关推荐

    面向资源的架构:REST的另一面.doc

    面向资源的架构,通常以REST(Representational State Transfer)为核心,是一种设计分布式系统,特别是互联网应用的架构风格。REST强调以资源为中心,通过HTTP协议进行交互,利用URI(Uniform Resource Identifier...

    rest架构1

    REST 架构风格是基于资源的架构风格,它强调面向资源的设计和开发方式。RESTful 是一种满足 REST 架构风格约束条件和原则的应用程序或设计。其核心是面向资源,REST 专门针对网络应用设计和开发方式,以降低开发的...

    REST与面向资源的Web开发

    ### REST与面向资源的Web开发 #### REST简介 REST(Representational State Transfer)代表了一种分布式超媒体软件架构风格,最初由Roy Thomas Fielding在他的2000年博士论文中提出。REST并不是一种具体的标准或者...

    为何在云平台中使用REST作为架构设计风格

    REST(Representational State Transfer)架构风格是一种基于Web标准的软件架构,它将网络中的任何资源都抽象为可以寻址的实体,每个资源都拥有统一的接口。它包括如下特点: - 可寻址性(Addressability):每个...

    [示例][PHP]drest-master将Doctrine实体展现为REST资源结点的库.zip

    Doctrine是基于数据库抽像层上的ORM,它可以通过PHP对象轻松访问所有的数据库,例如MYSQL, ...对于REST这种面向资源的架构风格,有人提出一种全新的结构理念,即:面向资源架构(ROA:Resource Oriented Architecture

    面向服务的架构SOA分为2种 SOAP即Webservice和REST

    "rest(一种软件架构风格)_百度百科.url"和"SOA接口的两种常用实现比较:SOAP(WebService) vs REST(GET,POST).url"可能是链接到更详细的参考资料,它们提供了关于REST架构风格的深入介绍,以及SOAP和REST在实际应用...

    REST风格的架构

    REST风格的架构是一种基于HTTP协议,使用统一的接口来交互数据和实现功能的软件设计模式。在Web服务领域,REST(Representational State Transfer,表述性状态转移)已经成为构建可伸缩、高性能网络应用的重要选择。...

    一种基于REST的分布式地理资源聚合系统.pdf

    本文主要讲述了基于REST架构风格的分布式地理资源聚合系统的设计与实现。Mashup技术作为Web2.0时代兴起的一种新型Web应用程序,能够通过组合多种不同类型资源来创建新的服务,这一点在地理信息系统(GIS)的背景下尤...

    RESTful架构风格概述

    - **REST**:如前所述,是一种轻量级、易于理解和使用的架构风格。 - **RPC (Remote Procedure Call)**:是一种传统的远程调用协议,与REST相比,它通常更加复杂且不那么灵活。 #### 2. 认证机制 RESTful API需要...

    REST与SOA两种架构

    REST是一种架构风格,由Roy Fielding在2000年他的博士论文中提出,主要应用于Web服务设计。它基于HTTP协议,强调资源的识别和交互,通过URI(统一资源标识符)来定位资源,使用HTTP方法如GET、POST、PUT、DELETE等...

    基于SOA的网络地图服务系统设计.pdf

    本文还详细介绍了基于SOA架构模型和REST风格的Web服务技术在网络地图服务系统中的应用,包括系统设计和实现的详细步骤。作者根据工作实际,以SOA面向服务架构模型为基础完成了网络地图服务系统的设计和测试工作。 ...

    基于springboot+sureness的面向REST API资源无状态认证权限管理系统.zip

    标题中的“基于springboot+sureness的面向REST API资源无状态认证权限管理系统”是一个使用Spring Boot框架和Sureness库构建的API安全解决方案。这个系统旨在为RESTful API提供无状态的认证和授权管理,确保API服务...

    REST服务构建的web应用的优势和不足

    REST(REpresentational State Transfer)是一种混合架构风格,当前互联网的核心架构风格。基于 REST 服务(RESTful Service)的 Web 应用系统设计任务主要包括:识别并设计 REST 风格的服务,采用面向服务的思想...

    管理系统系列--基于springboot+sureness的面向REST API资源无状态认证权限管理系统.zip

    REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,用于构建可伸缩的、分布式的系统。RESTful API设计通常遵循以下原则: 1. 客户端-服务器架构:客户端与服务器分离...

    基于Spring Boot的REST API项目框架.zip

    - Representational State Transfer(表述性状态转移)是一种架构风格,用于构建网络应用程序。它强调资源的识别和无状态通信。 - 使用HTTP方法(GET、POST、PUT、DELETE等)操作资源,符合HTTP协议标准。 - URI...

Global site tag (gtag.js) - Google Analytics