Java Web

理解Restful架构风格(翻译自维基百科)

2016-09-16  本文已影响414人  Lucky_Micky

下面是维基百科的原文翻译:
Representational state transfer

前言

在计算机中,representational state transfer(REST)是一种应用于web开发的架构风格,使用这种风格设计的系统意在追求高性能,可靠性以及扩展能力(增长且容易支持更多的用户)。为了达到这些目标,开发者使用可重用组件,它们能在整个系统运行时可以被管理并且更新,而不会对系统造成影响。
从技术上来说,REST由分布式超媒体系统中一系列协作的组件,连接体以及数据元素组成,这个系统关注于组件角色以及数据元素而不是实现细节之间的一组具体交互。它的目的是促进性能,可伸缩性,可修改性,可见性,可移植性以及可靠性。RESTWorld Wide Web的一种软件架构风格。
术语representational state transfer在2000年被Roy Fielding在他的博士论文中出现,并且被定义。REST已经被用于描述理想的web架构,辨别存在的问题,比较可替代的方案并且确保协议扩展不会违反那些使web成功的核心约束。Fielding使用REST定义HTTP1.1和统一资源定位符(Uniform Resource Identifiers)。
名字representational state transfer意在勾勒一幅一个设计良好的web应用怎样运作的图像:一个由web页面组成的网络(一个虚拟状态机),用户通过点击超链接(状态转移)来继续访问到下一个页面(代表下一个应用的状态),这个页面被传输给用户并且被渲染。
系统遵循REST限制就能被称之为RESTFUL。典型的RESTFUL系统,但并不是全部,在HTTP协议之上使用相同的HTTP动词(GET,POST,PUT,DELETE,etc)进行信息交换,web浏览器运用这些动词来获取网页并且向远程服务器发送数据。REST系统作为一个用URI来标识的web资源来与外部系统交互,比如/people/tom,能够使用标准动词如GET /people/tom来操作。

内容

  1. 历史
  2. 架构的属性
  3. 架构的限制
  1. 应用于web服务

历史

REST于2000年被Roy thomas Fielding在他的博士论文Architectural Style and the Design of Network-based Software Architectures中定义的。Fielding基于1996已经存在的HTTP1.0设计,于1996·1999间与HTTP1.1并行开发了REST架构的风格。
回顾一下在REST发展过程中Roy Fielding说过:

架构特性

REST架构风格约束影响的架构特性如下:

架构限制

REST的架构特性通过把具体交互约束应用于组件、连接器和数据的时候才能很好地被理解。只要遵循本节描述的REST约束,你的系统就能称之为RESTFUL。遵守这些约束,并且遵守REST架构风格,使得任意一种超媒体系统具备有吸引力的非功能特性,比如性能,可伸缩性,简单性,可修改性,可见性,可移植性以及可靠性。
标准的REST限制是:

应用于web服务

遵循REST架构限制的Web服务APIs被称之为RESTful APIs。基于HTTP的RESTful APIs从下列方面被定义:

URL和HTTP方法之间的关系
下表展示了一个HTTP方法在RESTful API中的典型应用:

URL GET PUT POST DELETE
http://api.example.com/resources/ 列出URIs和集合成员的其它细节 用另外一个集合替换整个集合 在集合中创建一个新的实体。新的入口URI被自动赋值且通常通过操作被返回。 删除整个集合
http://api.example.com/resources/item17 获取集合中指定的成员的表现层,以一种合适的互联网媒体类型展示。 替换集合中指定的成员,或者如果它不存在,那么创建它。 并不通用。把指定的成员认为是一个它自己的集合并且在集合中创建一个新的实体 删除集合中指定的实体

PUT和DELETE方法被指定为幂等,即无论它们重复执行多少次,结果都一样。GET方法是一个安全方法,即调用它并不会产生副作用。换句话说,获取或访问一个记录并不会改变它。PUT/DELETE和GET的区别与the notion of Command-Query Separation (CQS)十分相似。比如A查询操作(如GET)期望在被查询的数据中没有副作用。命令(PUT/DELETE)对这个数据没有疑问,但是它会计算应用于数据的变化(比如更新或者插入将会使用数据库关键字)。
不像基于SOAP的web服务,对于RESTful web服务APIs没有一个官方标准。这是因为REST是一种架构风格,而SOAP是一种协议。即使REST不是一个标准,大多数RESTful实现都利用了标准,比如HTTP,URL,JSON以及XML。

参考资料
维基百科-Representational state transfer

上一篇下一篇

猜你喜欢

热点阅读