在阅读了大量有关REST与SOAP之间差异的内容后,我得出了REST只是HTTP的另一种说法的印象。有人可以解释下REST为HTTP添加了哪些功能吗?
注意:我不需要比较REST和SOAP。
在阅读了大量有关REST与SOAP之间差异的内容后,我得出了REST只是HTTP的另一种说法的印象。有人可以解释下REST为HTTP添加了哪些功能吗?
注意:我不需要比较REST和SOAP。
GET
和POST
。采用REST的方式是使用协议中的所有方法。DELETE
来删除URI后面的文档(无论是文件、状态等),而在HTTP中,你会误用GET
或POST
查询,例如:...product/?delete_id=22
。HTTP是一种用于通信的协议,通常用于与互联网资源或任何具有Web浏览器客户端的应用程序进行通信。
REST意味着在设计应用程序时使用的主要概念是资源:对于要执行的每个操作,您需要定义一个资源,在该资源上通常仅执行CRUD操作,这是一项简单的任务。为此,非常方便使用HTTP协议中使用的四个动词来执行四个CRUD操作(GET代表读取,POST代表创建,PUT代表更新,DELETE代表删除)。
这与旧的RPC(远程过程调用)概念不同,其中您有一组要执行的操作,作为用户调用的结果。例如,如果您考虑如何描述Facebook上帖子的“赞”,则可以使用RPC创建名为AddLikeToPost
和RemoveLikeFromPost
的服务,并将其与所有其他与FB帖子相关的服务一起管理,因此您不需要为“赞”创建特殊对象。
使用REST,您将拥有一个独立管理的“赞”对象,可使用Delete和Create函数进行管理。这也意味着它将在您的数据库中描述为一个单独的实体。这可能看起来是一个小的差异,但是像那样工作通常会产生更简单的代码和更简单的应用程序。通过这种设计,大多数应用程序的逻辑从对象的结构(模型)中很明显,而RPC通常需要显式添加更多逻辑。
设计RESTful应用程序经常更难,因为它要求您以简单的方式描述复杂的事物。仅使用CRUD函数描述所有功能是棘手的,但在完成后,您的生活会变得更简单,并且您会发现自己编写了更短的方法。
REST 架构还有一个限制,就是不要在与客户端通信时使用会话上下文(无状态),这意味着需要传递所有用于理解客户端身份和需求的信息。每个函数调用都是自描述的,没有可在消息中引用的先前与客户端的对话。因此,客户端不能告诉您“给我下一页”,因为您没有会话来存储前一页和所需页面的信息,客户端必须说“我的名字是Yuval,请获取指定论坛帖子的第 2 页”。这意味着在通信中需要传输更多数据,但考虑从“获取下一页”函数与“在 Stack Overflow 中获取问题 ID 2190836 的第 2 页”中找到的错误报告之间的差异。
当然,这只是冰山一角,但就我个人而言,这些是其中的主要概念。
REST强制使用可用的HTTP命令,就像它们本来被设计使用的那样。
例如,我可以这样做:
GET
http://example.com?method=delete&item=xxx
但如果是休息,我会使用“DELETE”请求方法,避免使用“method”查询参数的必要性。
DELETE
http://example.com?item=xxx
HTTP是一种应用程序协议。REST则是一组规则,遵循这些规则可以构建具有一定可取限制的分布式应用程序。
如果您正在寻找最重要的REST限制,以区别于普通的HTTP应用程序,我会说“自描述”约束和超媒体约束(也称为应用状态的超媒体引擎(HATEOAS))最为重要。
自描述约束要求REST请求在用户意图方面完全自我描述。这使得中间件(代理和缓存)可以安全地对消息进行处理。
HATEOAS约束是将应用程序转换为链接网络的约束,其中客户端的当前状态基于其在该网络中的位置。这是一个棘手的概念,需要更多的时间来解释。
HTTP是一种合同,通信协议;REST是一个概念,一种体系结构风格,它可以使用HTTP、FTP或其他通信协议,但通常与HTTP一起使用。
REST蕴含一系列关于服务器和客户端如何交互的约束条件。HTTP是一种具有给定机制的服务器-客户端数据传输通信协议,它在REST API中最常用,仅因为REST受到WWW(万维网)启发,在REST定义之前,WWW广泛使用HTTP,因此使用HTTP实现REST API更容易。
REST有三个主要的约束条件(但还有更多):
而HTTP只是一种通信协议工具,可帮助实现这一目标。
欲了解更多信息,请查看以下链接:
REST = 表述性状态转移
REST是一组规则,遵循这些规则可以构建具有特定一组优秀约束条件的分布式应用程序。
REST是一种协议,用于交换任何(XML、JSON等)消息,并可使用HTTP协议来传输这些消息。
特点:
它是无状态的,理想情况下客户端和服务器之间不应该保持连接。客户端将其上下文传递给服务器,然后服务器可以存储此上下文以处理客户端的进一步请求例如,由客户端传递的会话标识符标识了服务器维护的会话。
无状态的优势:
无状态的缺点:
REST支持的HTTP方法:
GET: /string/someotherstring它是幂等的,并应该在每次调用时返回相同的结果。
PUT:与GET相同。幂等性且用于更新资源。
POST:应包含一个网址和正文,用于创建资源。理想情况下,多个调用应返回不同的结果,并应创建多个产品。
DELETE:用于删除服务器上的资源。
HEAD:
HEAD方法与GET方法完全相同,只是服务器不得在响应中返回消息正文。响应头中包含的元信息应与响应GET请求发送的信息相同。
OPTIONS:
这个方法允许客户端确定与资源相关的选项和/或需求,或者服务器的功能,而不意味着资源操作或启动资源检索。
HTTP响应
以下是一些重要的状态码:
200 - 请求成功
3XX - 需要客户端提供附加信息并进行URL重定向
400 - 错误请求
401 - 未经授权访问
403 - 禁止访问
请求有效,但服务器拒绝采取行动。用户可能没有访问资源的必要权限,或者可能需要某种类型的帐户。
404 - 未找到
所请求的资源无法找到,但将来可能会提供。客户端可以发出后续请求。
405 - 方法不被允许
请求方法不支持所请求的资源;例如,在需要通过POST提交数据的表单上进行GET请求,或在只读资源上进行PUT请求。
500 - 内部服务器错误
502 - 错误的网关
并不完全是...
http://en.wikipedia.org/wiki/Representational_State_Transfer
REST最初是在HTTP的上下文中描述的,但不限于该协议。如果其他应用层协议已经为基于传输有意义的表现状态的应用程序提供了丰富和统一的词汇表,那么RESTful架构可以基于其他应用层协议。 RESTful应用程序最大化使用预先存在的、定义良好的接口和所选网络协议所提供的其他内置功能,并将新的应用程序特定功能附加到其上的数量最小化。
http://www.looselycoupled.com/glossary/SOAP
(简单对象访问协议)Web服务消息的标准。基于XML,SOAP定义了一个信封格式和各种规则来描述其内容。与WSDL和UDDI一起被视为Web服务的三个基础标准之一,它是交换Web服务的首选协议,但并不是唯一的协议;REST的支持者认为它增加了不必要的复杂性。
REST是一种特定的方法来设计大型系统(例如Web)。
它是一组“规则”(或“约束”)。
HTTP是一种协议,试图遵守这些规则。
因此,REST架构和HTTP 1.1协议是相互独立的,但HTTP 1.1协议被设计成符合REST原则和限制的理想协议。可以将HTTP和REST之间的关系看作是,REST是设计,而HTTP 1.1是该设计的实现。
HTTP是一种通过网络传输消息的通信协议。SOAP是一种协议,用于交换基于XML的消息,并可以使用HTTP来传输这些消息。Rest是一种协议,用于交换任何(XML或JSON)消息,并可使用HTTP来传输这些消息。