`
xinyangwjb
  • 浏览: 81806 次
  • 性别: Icon_minigender_1
  • 来自: 信阳
社区版块
存档分类
最新评论

RESTful初探之一(What is REST)

 
阅读更多
英文tutorial guide
http://www.ibm.com/developerworks/java/tutorials/j-rest/
也是以下翻译的原文链接

RESTfull==REpresentation State Transfer没有好的中文翻译。

RESTfull是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。

首先先得明白有状态和无状态。RPC框架中视图层是有状态的。

Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。无状态意味着可随意分布式


REST 是一种依靠命名资源的低耦合web应用设计风格——in the form of Uniform Resource Locators(URLs),Uniform Resource Identifiers(URIs),and Uniform Resource Names,for instance——rather than messages.
以统一资源定位,统一资源标示,统一资源命名的形式实现,而不是动态的信息

REST leverages aspects of the HTTP protocol such as GET and POST request.
REST利用对HTTP协议如GET何Post请求的aspect

RESTfull真正veritable father在他的dissertation中说的:"
emphasizes scalability of component interactions, generality of interfaces,independent deployment of components,and intermediary components to reduce interaction latency,enforce security,and encapsulate legacy systems"
着重于组件交互的可扩展性,通用接口,独立部署组件和利用中间组件去减少交互延迟,强制安全性和封装遗留系统。

Everything on the Web(pages,images,and so on)is in essence a resource.REST's reliance on named resources rather than messages facilitates loose coupling in application design,because it limits the exposure of the underlying technology.For instance,the folowing URL exposes a resource without implying anything about the underlying technology:http://thediscoblog.com/2008/03/20/unambiguously-analyzing-metrics/
web(pages,images,and so on)本质上就是资源。REST 依赖命名的资源而不是报文,从而降低应用设计的耦合度。因为他限制底层技术的暴露。

this URL represents a resource —— an article called "Unambiguously analyzing metrics".A request for this resource leverages the HTTP GET command.Notice that
the URL is noun-based. A verb-based version(which might look something like http://thediscoblog.com/2008/03/20/getArticle?name=unambiguously-analyzing-metrics)would violate REST principles,because it embeds a message.in the form of getArticle.You could also imagine posting a new resouce(say, an article resource such as http://thediscoblog.com/2008/03/22/rest-is-good-for-you/)via HTTP's POST command.Although you can also imagine associated,verb-based APIs——such as createArticle?name=rest-is-good-for-you and deleteArticle?name=rest-is-good-for-you — such calls hijack the HTTP GET command and,for the most part,ignore the already available(and successful)HTTP infrastructure.In other words,they are not RESTful.
URL代表了一个资源,一篇名叫"Unambiguously analyzing metrics"的文章。注意这个请求是基于名词的,如果是基于动词的(如http://thediscoblog.com/2008/03/20/getArticle?name=unambiguously-analyzing-metrics),则会侵犯REST原则。因为他嵌入了一个报文,你可以根据这个动词联想其他文章,甚至其他的请求,如createArticle、deleteArticle。这样的请求劫持了get命令,更重要的是忽略了已经有效的HTTP基础。

The beauty of REST is that resources can be anything,and how they are represented can vary too.In the preceding example,the resource is an HTML file;accordingly,the format of the response would be HTML.But the resource could have easily been an XML document,serialized object,or JSON representation.It really doesn't matter.What matters is that a resource is named and that communication with it doesn't affect its state.Not affecting state is important because stateless interactions facilitate scalability.
REST的好处是资源可以使任何事物,并且如何表现也可以是多样化的。之前的例子,资源是HTML文件,因此response的格式可能是HTML,但是资源可以轻易地改为XML,序列化对象,或者JSON表现形式。这不是问题,问题是资源如何命名及访问它却不影响他的状态。

To quote LEonardo da Vinci,"simplicity is the ultimate sophistication"
引用那谁的话说:“简单才是最终极的复杂”

分享到:
评论

相关推荐

    restlet restful

    Restlet是Java领域的一款开源框架,专门用于构建REST(Representational State Transfer)风格的Web服务。RESTful是一种软件架构风格,设计模式,是基于HTTP协议的Web服务设计原则,强调资源的概念,通过URI来定位...

    RESTful API接口通用完整规范_V1.doc

    REST它是一种使用URL来定位资源,使用HTTP请求描述操作的Web服务规范,本资源包含RESTful简介、设计原则、通用说明、规范细则、接口管理说明。

    C# 一个简单的 Restful 服务端和 Restful 客户端 Demo

    1. **RESTful原则**:REST(Representational State Transfer)的核心思想是资源(Resource)和状态转移。通过HTTP方法(GET、POST、PUT、DELETE等)来操作资源,实现无状态、缓存、层叠等特性。 2. **C#与ASP.NET ...

    patch_NC65restful接口_20180629_dingyh5.zip

    总之,NC65的RESTful接口为开发者提供了一种高效、标准的方式来访问和操作系统资源,"patch_NC65restful接口_20180629_dingyh5.zip"则是一个具体的实例,展示了如何管理和更新这些接口。掌握RESTful接口的使用,将有...

    Spring CXF Restful 实例

    REST(Representational State Transfer)是一种软件架构风格,常用于构建现代Web服务,强调简洁、无状态和基于标准的接口设计。 首先,让我们了解REST的基本原则。RESTful API通常基于HTTP协议,通过GET、POST、...

    c# 服务端调用RestFul Service的方法

    REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于约束条件和架构原则的运用。REST 架构风格的核心概念是“资源”(Resource),并通过 URL 来定位这些资源。RESTful API 使用 ...

    REST_资源指南_restful.pdf

    总之,《REST开发者RESTful资源指南》是一份非常有价值的参考资料,无论是对于REST新手还是经验丰富的开发者来说,都能够从中获得宝贵的见解和实用的技巧。通过深入理解REST的核心理念和技术细节,开发者可以更加...

    REST开发者RESTful资源指南.rar

    维基百科把表述性状态转移(Representational State Transfer ,REST)定义为“分布式超媒体系统、如万维网的一种软件架构形式”。Web朋务的RESTful方案被广泛规为SOAP的一个更简单的替代方案。许多大型的Web朋务...

    Django REST framework讲义PDF全集,中文文档PDF版

    Django REST Framework提供了一系列工具和库,简化了开发RESTful API的过程。它包括序列化、认证、权限管理、分页、过滤等关键功能,并且支持自定义,以满足各种项目需求。DRF的API友好,文档详尽,社区活跃,是开发...

    Restful使用多层体系结构构建REST风格的Web服务和动态Web应用程序

    在构建现代Web应用程序时,REST(Representational State Transfer,表述性状态转移)风格已经成为一种广泛采用的架构设计原则。RESTful API设计不仅简洁且易于理解,还提供了良好的可伸缩性和可维护性。本篇文章将...

    一个快速实现SQL转Restful微服务接口的工具

    标题中的“一个快速实现SQL转Restful微服务接口的工具”揭示了我们今天要讨论的核心技术:将SQL查询转换为RESTful API接口。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于...

    RESTful Java Web Services

    #### 一、RESTful Web服务概览 REST(Representational State Transfer)是一种软件架构风格,最初由Roy Fielding在他的博士论文中提出。它定义了一种简单且灵活的方法来创建分布式系统,如Web服务。在《RESTful ...

    Angular-RESTfulService, Angular 调用rest式服务的示例.zip

    Angular-RESTfulService, Angular 调用rest式服务的示例 Angular rest式服务示例这个项目简单地介绍了如何使用 Angular 来调用rest式服务。 只需克隆项目或者下载并提取. zip 即可开始。 Angular 概念使用app类和...

    REST-Project.zip_REST-Project_java RESTFul_java rest_project_res

    在本项目中,我们主要探讨RESTful API设计原则、Java的REST服务实现以及与之相关的项目结构。 【bpsweb】可能代表Web应用的前端部分,或者是一个与业务处理相关的模块。在RESTful架构中,前端通常负责用户界面交互...

    c c++实现http服务 c c++开发restful api服务

    而REST(Representational State Transfer,表述性状态转移)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,通过URL定位资源,使用HTTP方法(GET、POST、PUT、DELETE等)对资源进行操作。 要使用C或C++...

    什么是REST,符合REST的API叫RESTful 两种SOA接口实现:SOAP(WebService) vs REST

    例如,文件名`lj比起用问号方式传递参数,REST方式最方便之处在于--生成静态页面并缓存起来.txt`就提到了这一点。 SOA(Service-Oriented Architecture)是一种面向服务的架构风格,它将业务逻辑组织为一组可重用的...

    CAS RESTful API 开发文档

    ... 当前最新版本 cas-server-3.4.2 , ...n 下载 restlet 相关 http://www.restlet.org/downloads/ , 解压后将下面 jar 拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib: ( 它奶奶地这一步骤很折腾 ) ...

    restFul.Net

    在RESTful.NET中,`restService`是核心概念之一,它代表了一个服务端的资源处理单元。通过定义RESTful接口,开发者可以构建出易于理解、可维护的API。RESTful服务通常由一组URI(统一资源标识符)组成,每个URI对应...

Global site tag (gtag.js) - Google Analytics