让我们回到历史,谈谈罗伊菲尔丁的研究——“Architectural Styles and the Design of Network-based Software Architectures”。它是一篇大论文,谈论了很多各种各样的东西。但是作为一名标准工程师,您想如何解释清楚 REST(Representational State Transfer)的含义,以及它的架构风格是什么。
这是我的解释方式——“什么是 REST”。
查看这个运行在各种硬件之上的 www(万维网),例如路由器、服务器、防火墙、云基础设施、交换机、LAN、WAN。这个www(万维网)的总体目标是分发hypermedia。这个万维网配备了各种服务,例如基于信息的服务、网站、youtube 频道、动态网站、静态网站。这个万维网使用 HTTP 协议通过客户端/服务器机制在世界范围内分发超媒体。此 HTTP 协议在 TCP/IP 或其他适当的网络堆栈之上运行。
这个HTTP protocol 正在使用八种方法来管理“分发协议”或“分发架构样式”。这八种方法分别是:OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT。
但是在这个 HTTP 之上,Web 应用程序正在使用自己的方式来分发超媒体,例如 Web 应用程序正在使用与客户端和服务器高度相关的 Web 服务,或者 Web 应用程序正在使用自己的客户端/服务器设计方式在 HTTP 之上建立这种分发渠道的机制。
Roy Fielding Research 说的,HTTP 的 OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT 这八种方法非常成功地在各种硬件资源和网络之上将超媒体传递到世界各地与客户端/服务器机制相结合,为什么我们不在我们的基于 Web 的应用程序中使用类似的策略。在此 GET、POST、DELETE 和 PUT 上使用最多。所以有四种方法将超媒体传送到世界各地。
在 REST API Architecture Style 应用程序中,Web 应用程序需要设计具有所有对象实体集的业务逻辑(驻留在服务器中,例如 Tomcat、Apache HTTP)(例如,客户是一个实体) 和可能的操作(例如“根据客户 ID 检索客户信息”)。这些实体的那些可能的操作应该设计有四个主要的操作或方法,即创建、检索、更新、删除。这些实体称为资源,它们以某种形式呈现或表示,例如JSON 或 XML 或其他东西。我们有客户端(浏览器)调用 Create、Retrieve、Update、Delete (CRUD) 方法来对驻留在服务器中的此类资源执行适当的功能。
但正如表示的概念所解释的,表示业务逻辑或对象的实体的表示方式。但是“状态转移”呢?
状态转移,它谈论从客户端到服务器的“通信状态”。它讨论了从客户端到服务器的“状态传输”的设计,例如客户首先调用了“创建客户”操作,然后调用了“客户”可以调用的下一个客户状态或客户状态。它的状态可能是“检索创建的客户端数据”、“更新客户端数据”或什么