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

再看REST

    博客分类:
  • Ruby
阅读更多
最近在看PM老张的《RESTful Web Services》,重新理解了一遍REST,以前的一些迷雾都变清晰了。

1,什么是REST?
"Representational State Transfer (REST) is a style of software architecture for distributed hypermedia systems
such as the World Wide Web. "

现实社会中的分布式超媒体系统的例子主要为www,但是我们不使用http、不与www交互也能构建遵循REST风格的软件系统。
REST是针对分布式超媒体系统的软件架构风格,这个前提很重要。
一般来说谈到REST风格时都是针对www应用的。

REST strictly refers to a collection of network architecture principles that outline how resources are defined
and addressed.
资源是REST的Central Principle。

"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 an 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."
当浏览器浏览访问一个url资源时,返回的页面即为该url资源的representation,这个representation给浏览器一个state,当
浏览器访问下一个url资源时,浏览器的state就transfer了。

2,REST的特性:
Client-Server: a pull-based interaction style: consuming components pull representations. (Comet不遵守REST)
Stateless: each request from client to server must contain all the information necessary to understand the request,
and cannot take advantage of any stored context on the server. (HTTP cookies不遵守REST)
Cache: to improve network efficiency responses must be capable of being labeled as cacheable or non-cacheable.
Uniform interface: all resources are accessed with a generic interface (例如HTTP GET/POST/PUT/DELETE).
Named resources: the system is comprised of resources which are named using a URL.
Interconnected resource representations: the representations of the resources are interconnected using URLs, thereby
enabling a client to progress from one state to another.
Layered components: intermediaries, such as proxy servers, cache servers, gateways, etc, can be inserted between clients
and resources to support performance, security, etc.

3,,什么是RESTful?
Systems that follow Fielding's REST principles are often referred to as RESTful.
www就是一个RESTful的系统,因为www符合REST架构风格。
我们常说RESTful Rails,指的就是使用REST架构风格来做Rails开发,即使用HTTP动词GET/POST/PUT/DELETE和map.resources来开发
resources.rb是RESTful Rails的实现,参考Rails源码研究之ActionController:八,resources

4,什么是RESTful Web Services?
RESTful Web Services即符合REST架构风格的轻量级Web Services。
RESTful Web Services以及ROA(REST oriented architecture)正是《RESTful Web Services》一书要讲的。
Rails的RESTful Web Services实现

参考资源:
http://en.wikipedia.org/wiki/Representational_State_Transfer
http://rest.blueoxen.net/cgi-bin/wiki.pl?FrontPage
http://www.xfront.com/REST-Web-Services.html
《RESTful Web Services》
分享到:
评论
3 楼 walkandsing 2007-08-14  
semantic web是现在学术上很火的一个概念,描绘了一幅美好的未来,但到现在仍然没有一个完整的原型系统。有很多人并不看好这项技术的未来,实际上web 2.0带给我们的semantic我们还没有很好的利用
2 楼 hideto 2007-08-09  
嗯,谢谢老大

另外我也看了些semantic web的东西,web3.0很可能就是semantic web?
1 楼 dlee 2007-08-09  
hideto 写道
Stateless: each request from client to server must contain all the information necessary to understand the request,
and cannot take advantage of any stored context on the server. (HTTP cookies不遵守REST)

此处理解有误,Cookie违反的并不是服务器端无状态的架构约束,因为它是保存在客户端的。Cookie的主要问题有两个:
1. 它并不能准确代表每一次请求的状态,因为它是与一个浏览器实例绑定在一起的,而不是与一次请求绑定在一起的。
2. 它违反了REST在语义可见性方面的架构约束。

详情可以仔细看看Fileding论文中文版的“6.3.4.2 Cookie”小节,里面有很详细的解释。

相关推荐

    REST实战(REST in Practice)

    - **Colin Jack**(高级软件开发者):指出尽管REST可能看起来令人困惑且难以接近,但本书成功地将复杂的部分描述得既简单又明显,并展示了如何基于REST和Web来解决实际问题。 #### 五、书籍结构与内容概览 - **...

    白话REST-识别真假REST

    REST(Representational State Transfer),即“表征状态转移”,是由Roy Fielding博士在其2000年的博士论文中提出的一种软件架构风格。REST强调基于网络的分布式系统的松耦合设计,并推崇无状态通信机制。在理解...

    nodejs+websock+rest+rest调用

    该平台能实现基于ws的聊天室,可以将聊天的信息调用rest api存储到数据库,可以通过网页访问该平台提供的rest api后再进行ws的相关操作,也就是说把ws的聊天服务端与rest的调用以及rest的网站发布整合到了一起。...

    谷歌浏览器插件+AdvancedRestClient+Http Rest API测试调试

    1. 安装Advanced REST Client插件:首先,你需要在Chrome浏览器的Web Store中搜索“Advanced REST Client”并安装它。安装完成后,你可以在浏览器的扩展程序栏找到ARC的图标。 2. 创建新的HTTP请求:打开ARC,点击...

    REST Server in Delphi XE Using DataSnap中文版

    ### REST Server 在 Delphi XE 中使用 DataSnap 的关键技术点 #### 1. REST 架构简介 - **背景**: REST(Representational State Transfer)是 Web 服务领域的一个重要概念,尤其在过去十年中,随着 Web 2.0 的...

    REST地图与天地图叠加

    本示例探讨的主题是“REST地图与天地图叠加”,这涉及到两种不同的地图服务技术的融合,即SuperMap iClient的REST地图服务和天地图服务。我们将详细解释这两种技术及其在Flex客户端下的叠加应用。 首先,REST...

    cpprest实例工程

    cpprest库,全称是Casablanca,是由微软开发的一个C++ REST(Representational State Transfer)编程库,主要用于构建云应用和服务之间的通信。cpprest库提供了轻量级、高效且易于使用的API,使得开发者可以方便地...

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

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

    Rest Severs in Delphi XE Using DataSnap

    在Delphi XE中利用DataSnap构建REST服务器是一项强大的技术,可以帮助开发者创建高效、可扩展的Web服务。本文将深入探讨这一主题,介绍REST(Representational State Transfer)架构原理,以及如何在Delphi环境中...

    kettle rest 接口 请求实例

    在Kettle中,REST接口提供了一种灵活的方式与外部系统进行通信,例如,发送和接收JSON数据,执行各种操作。本教程将深入探讨如何使用Kettle与RESTful服务进行交互。 首先,我们要理解REST(Representational State ...

    SOA与REST 用REST构建企业级SOA解决方案

    然而,二者却站在不同的层次看架构,SOA的角度偏向于战略;而REST的角度则偏向于战术。SOA给出了一组架构原则实现其战略目标,而REST则通过一系列约束实现其战术目标。  《SOA与REST:用REST构建企业级SOA解决方案...

    REST服务示例入门

    1. 修改了web.xml的段,使工程既可以访问rest服务,又可以访问普通的页面资源,不用再像原作者那样再单独部署一个页面工程。 2. 由于【1】的改动,使得只有以/rest开头的URL才能映射到某资源,使用rest服务时,必须...

    java rest api入门实例

    REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,...

    JIRA REST Java Client

    **JIRA REST Java Client**是Atlassian官方提供的一款用于与JIRA进行交互的Java库,它使得开发人员能够轻松地通过RESTful API访问和操作JIRA系统。这个库提供了丰富的功能,包括创建、更新、查询问题(issues)、...

    C# 实现Rest服务接口,含实现文档

    本项目“C# 实现Rest服务接口,含实现文档”将详细介绍如何使用C#和ASP.NET框架来构建RESTful服务。 1. **C#语言基础**:C#是Microsoft开发的一种面向对象的编程语言,常用于Windows平台的应用程序开发,尤其在.NET...

    REST API.md

    REST是设计分布式网络服务或API时遵循的架构原则以及设计风格, 前后端分离最佳实践的开发标准或规范。本文为资料收藏的.md笔记,选取比较重要的资料,收集了以下内容: 重要概念介绍,如前述的第2-第4个关键词。 ...

    Django-REST-framework教程中文版

    Django-REST-framework教程中文版是一份关于如何使用Django-REST-framework来快速创建REST风格API的中文教程。Django-REST-framework是一个建立在Django框架之上的强大的REST API工具包,它允许开发者利用Django的...

    WCF REST service test

    **WCF REST服务测试** Windows Communication Foundation (WCF) 是微软.NET Framework中用于构建分布式应用程序的服务框架。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于...

Global site tag (gtag.js) - Google Analytics