理解本真的REST架构风格
要深入明白REST,需要明白REST的五个要害词:
- 资源(Resource)资源的表述(Representation)状态转移(State Transfer)统一接口(Uniform Interface)超文本驱动(Hypertext Driven)
什么是资源?
资源是一种看待服务器的方式,即,将服务器看作是由许多离散的资源组成。每个资源是服务器上一个可命名的抽象观点。由于资源是一个抽象的观点,以是它不仅仅能代表服务器文件系统中的一个文件、数据库中的一张表等等详细的工具,可以将资源设计的要多抽象有多抽象,只要想象力允许而且客户端应用开发者能够明白。与面向工具设计类似,资源是以名词为焦点来组织的,首先关注的是名词。一个资源可以由一个或多个URI来标识。URI既是资源的名称,也是资源在Web上的地址。对某个资源感兴趣的客户端应用,可以通过资源的URI与其举行交互。
什么是资源的表述?
资源的表述是一段对于资源在某个特准时刻的状态的形貌。可以在客户端-服务器端之间转移(交流)。资源的表述可以有多种花样,例如HTML/XML/JSON/纯文本/图片/视频/音频等等。资源的表述花样可以通过协商机制来确定。请求-响应偏向的表述通常使用差别的花样。
什么是状态转移?
状态转移(state transfer)与状态机中的状态迁徙(state transition)的寄义是差别的。状态转移说的是:在客户端和服务器端之间转移(transfer)代表资源状态的表述。通过转移和操作资源的表述,来间接实现操作资源的目的。
什么是统一接口?
REST要求,必须通过统一的接口来对资源执行种种操作。对于每个资源只能执行一组有限的操作。以HTTP/1.1协议为例,HTTP/1.1协议界说了一个操作资源的统一接口,主要包罗以下内容:
7个HTTP要领:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS
HTTP头信息(可自界说)
HTTP响应状态代码(可自界说)
一套尺度的内容协商机制
一套尺度的缓存机制
一套尺度的客户端身份认证机制
REST还要求,对于资源执行的操作,其操作语义必须由HTTP新闻体之前的部门完全表达,不能将操作语义封装在HTTP新闻体内部。这样做是为了提高交互的可见性,以便于通讯链的中心组件实现缓存、宁静审计等等功效。
什么是超文本驱动?
“超文本驱动”又名“将超媒体作为应用状态的引擎”(Hypermedia As The Engine Of Application State,来自Fielding博士论文中的一句话,缩写为HATEOAS)。将Web应用看作是一个由许多状态(应用状态)组成的有限状态机。资源之间通过超链接相互关联,超链接既代表资源之间的关系,也代表可执行的状态迁徙。
在超媒体之中不仅仅包罗数据,还包罗了状态迁徙的语义。以超媒体作为引擎,驱动Web应用的状态迁徙。通过超媒体袒露出服务器所提供的资源,服务器提供了哪些资源是在运行时通过剖析超媒体发现的,而不是事先界说的。从面向服务的角度看,超媒体界说了服务器所提供服务的协议。客户端应该依赖的是超媒体的状态迁徙语义,而不应该对于是否存在某个URI或URI的某种特殊结构方式作出假设。一切都有可能转变,只有超媒体的状态迁徙语义能够恒久保持稳固。
一旦读者明白了上述REST的五个要害词,就很容易明白REST气势派头的架构所具有的6个主要特征:
面向资源(Resource Oriented)
可寻址(Addressability)
连通性(Connectedness)
无状态(Statelessness)
统一接口(Uniform Interface)
超文本驱动(Hypertext Driven)
这6个特征是REST架构设计优异水平的判断尺度。其中,面向资源是REST最显着的特征,即,REST架构设计是以资源抽象为焦点睁开的。可寻址说的是:每一个资源在Web之上都有自己的地址。连通性说的是:应该只管制止设计伶仃的资源,除了设计资源自己,还需要设计资源之间的关联关系,而且通过超链接将资源关联起来。无状态、统一接口是REST的两种架构约束,超文本驱动是REST的一个要害词,在前面都已经诠释过,就不再赘述了。
从架构气势派头的抽象高度来看,常见的漫衍式应用架构气势派头有三种:
漫衍式工具(Distributed Objects,简称DO)架构实例有CORBA/RMI/EJB/DCOM/.NET Remoting等等。
远程历程挪用(Remote Procedure Call,简称RPC)架构实例有SOAP/XML-RPC/Hessian/Flash AMF/DWR等等。
“沈阳软件公司”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与
我们联系删除或处理,客服QQ:55506560,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同
其观点或证实其内容的真实性。
热门文章
使用“扫一扫”即可将网页分享至朋友圈。