java系统找不到指定文件怎么解决
243
2022-09-10
1. REST简述
REST(Representational State Transfer,表述性状态传递)是由RoyThomas Fielding博士在他的论文Architectural Styles and the Design of Network-based Software Architectures中提出的一个术语。REST本身只是为分布式超媒体系统设计的一种架构风格,而不是标准。基于Web的架构实际上就是各种规范的集合,比如HTTP是一种规范,客户端服务器模式是另一种规范。每当我们在原有规范的基础上增加新的规范时,就会形成新的架构。而REST正是这样一种架构,它结合了一系列规范,形成了一种新的基于Web的架构风格。 传统的Web应用大多是B/S架构,涉及如下规范。
(1)客户端-服务器:这种规范的提出,改善了用户接口跨多个平台的可移植性,并且通过简化服务器组件,改善了系统的可伸缩性。最为关键的是通过分离用户接口和数据存储,使得不同的用户终端共享相同的数据成为可能。 (2)无状态性:无状态性是在客户端-服务器规范的基础上添加的又一层规范,它要求通信必须在本质上是无状态的,即从客户端到服务器的每个request都必须包含理解该request必需的所有信息。这个规范改善了系统的可见性(无状态性使得客户端和服务器端不必保存对方的详细信息,服务器只需要处理当前的request,而不必了解所有request的历史)、可靠性(无状态性减少了服务器从局部错误中恢复的任务量)、可伸缩性(无状态性使得服务器端可以很容易释放资源,因为服务器端不必在多个request中保存状态)。同时,这种规范的缺点也是显而易见的,不能将状态数据保存在服务器上,导致增加了在一系列request中发送重复数据的开销,严重降低了效率。
(3)缓存:为了改善无状态性带来的网络的低效性,客户端缓存规范出现。缓存规范允许隐式或显式地标记一个response中的数据,赋予了客户端缓存response数据的功能,这样就可以为以后的request共用缓存的数据消除部分或全部交互,提高了网络效率。但是客户端缓存了信息,所以客户端数据与服务器数据不一致的可能性增加,从而降低了可靠性。B/S架构的优点是部署非常方便,在用户体验方面却不很理想。为了改善这种状况,REST规范出现。REST规范在原有B/S架构的基础上增加了三个新规范:统一接口、分层系统和按需代码。
(1)统一接口:REST架构风格的核心特征就是强调组件之间有一个统一的接口,表现为在REST世界里,网络上的所有事物都被抽象为资源,REST通过通用的链接器接口对资源进行操作。这样设计的好处是保证系统提供的服务都是解耦的,可极大简化系统,改善系统的交互性和可重用性。 (2)分层系统:分层系统规则的加入提高了各种层次之间的独立性,为整个系统的复杂性设置了边界,通过封装遗留的服务,使新的服务器免受遗留客户端的影响,也提高了系统的可伸缩性。 (3)按需代码:REST允许对客户端的功能进行扩展。比如,通过下载并执行applet或脚本形式的代码来扩展客户端的功能。但这在改善系统可扩展性的同时降低了可见性,所以它只是REST的一个可选约束。 REST架构是针对Web应用而设计的,其目的是为了降低开发的复杂性,提高系统的可伸缩性。REST提出了如下设计准则。 (1)网络上的所有事物都被抽象为资源(Resource)。 (2)每个资源都对应唯一的资源标识符(Resource Identifier)。 (3)通过通用的连接器接口(Generic Connector Interface)对资源 进行操作。 (4)对资源的各种操作都不会改变资源标识符。 (5)所有操作都是无状态的(Stateless)。
REST中的资源指的不是数据,而是数据和表现形式的组合,比如“最新访问的10位会员”和“最活跃的10位会员”在数据上可能有重叠或者完全相同,而它们由于表现形式不同,被归为不同的资源,这也就是为什么REST的全名是Representational State Transfer。资源标识符就是URI(Uniform Resource Identifier),不管是图片、Word还是视频文件,甚至只是一种虚拟的服务,也不管是XML、TXT还是其他文件格 式,全部通过URI对资源进行唯一标识。REST是基于HTTP的,任何对资源的操作行为都通过HTTP来实现。以往的Web开发大多数用的是HTTP中的GET和POST方法,很少使用其他方法,这实际上是对HTTP的片面理解造成的。HTTP不仅仅是一个简单的运载数据的协议,还是一个具有丰富内涵的网络软件的协议,它不仅能对互联网资源进行唯一定位,还能告诉我们如何对该资源进行操作。HTTP把对一个资源的操作限制在4种方法(GET、POST、PUT和DELETE)中,这正是对资源CRUD操作的实现。由于资源和URI是一一对应的,在执行这些操作时URI没有变化,和以往的Web开发有很大的区别,所以极大地简化了Web开发,也使得URI可以被设计成能更直观地反映资源的结构。这种URI的设计被称作RESTful的URI,为开发人员引入了一种新的思维方式:通过URL来设计系统结构。当然,这种设计方式对于一些特定情况也是不适用的,也就是说不是所有URI都适用于RESTful。REST之所以可以提高系统的可伸缩性,就是因为它要求所有操作都是无状态的。没有了上下文(Context)的约束,做分布式和集群时就更为简单,也可以让系统更为有效地利用缓冲池(Pool),并且由于服务器端不需要记录客户端的一系列访问,也就减少了服务器端的性能损耗。 Kubernetes API也符合RESTful规范,下面对其进行介绍。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~