REST系统和基于REST的系统之间的区别是什么?
从我读到的一些东西来看,所谓的REST服务实际上就是RESTful服务。那么两者之间的区别是什么呢?
REST系统和基于REST的系统之间的区别是什么?
从我读到的一些东西来看,所谓的REST服务实际上就是RESTful服务。那么两者之间的区别是什么呢?
当前回答
Web服务本质上是网站,其内容是由计算机程序而不是人消费的。REST是一套体系结构原则,它规定web服务应该最大限度地利用HTTP和其他web标准,以便程序获得人们已经可以从web中获得的所有好东西。REST经常与SOAP web服务和其他面向“远程过程调用”的web服务进行对比。
Stefan Tilkov在Parleys.com上关于REST的演讲非常棒,尤其是这个。
理查德森和Ruby的《Restful Web Services》是最好的一本书。
其他回答
“REST服务”和“REST式服务”是一回事。
基于REST的系统是任何遵循原始文档中定义的REST约定的系统,该文档创建了基于REST的网络应用程序的思想。
值得注意的是,RESTfulness有不同的等级。总的来说,REST是一种风格,而不是标准,因此有根据需要进行解释的空间。一个例子是分层资源url(例如/things/ID/relatedthings) vs平面url(例如/things/ID和/relatedthings?thing=ID)
具象状态传输(REST)是软件体系结构的一种风格。正如Roy Fielding在一篇论文中描述的那样,REST是一种“架构风格”,基本上利用了现有的Web技术和协议。
RESTful通常用于指实现这种体系结构的web服务。
REST是用于创建web服务的体系结构模式。RESTful服务就是实现该模式的服务。
在Richardson成熟度模型中定义了4个级别的API。这些被定义为:
level 0: any system that has a single endpoint for all its apis(SOAP or RPC fall in this category). Level 0 apis can also resemble "commands". level 1: a ResourceUri described system. This is a system that defines multiple entity-based URIs (instead of having a single endpoint like a level 0 systems would). These URIs can use different http actions (POST, GET, PUT, etc) to implement different actions against that resource. level 2: aka level 1 w/ a compliant use of Standard HTTP methods/verbs and multi status code responses level 3: aka level 2 plus HATEOAS (hypermedia included in the response which describes additional calls you can make)
虽然级别1、级别2和级别3可以被认为是REST系统,但只有更严格的级别(即级别2和级别3)才被认为是RESTful的。
所以本质上所有的RESTful api都是REST api,但并不是所有的REST api都是RESTful的
理查德森成熟度模型的定义
谢谢你的回答。 阅读Alex Rodriguez的这篇文章,他认为RESTful web服务有4个基本特征:
显式地使用HTTP方法。 是无状态的。 公开类似目录结构的uri。 传输XML、JavaScript对象符号(JSON)或两者。