大家好,今天我们要研究一个非常有趣、也是最重要的劳动力市场热门话题——REST。 我们将 REST 的概述分为三个部分:
-
在第一部分中,我们将介绍 REST 的历史并描述 REST 所依据的原则。
-
在第二部分中,我们将了解客户端和服务器之间如何通过 HTTP 协议进行通信。
-
在第三部分中,我们将编写一个小型 RESTful 应用程序,我们将使用 Postman 程序对其进行测试。
- HTTP;
- 网址和统一资源标识符;
- JSON 和较小程度的 XML;
- 依赖注入。
第 1 部分. 什么是 REST
REST 与 IT 世界中的许多事物一样,是Representational State Transfer的缩写。这是计算机网络中分布式系统组件之间交互的一种架构风格。简而言之,REST 定义了系统的不同组件之间的交互(数据交换)风格,每个组件在物理上可能位于不同的位置。这种架构风格代表了设计分布式系统时要考虑的一组一致的约束。这些限制有时称为 REST 原则。数量不多,只有6块。我们稍后再讨论它们。考虑到 REST 构建的应用程序,即 不违反 REST 施加的限制的称为 RESTful。 |
休息的历史
REST 一词是由 HTTP 协议的创建者之一 Roy Fielding 在 2000 年的博士论文“基于网络的软件架构的架构风格和设计”中创造的。可以说,REST 这个术语还很年轻,尽管它的概念是万维网的基础。我们不会深入探讨这个术语的起源历史。如果您想深入了解原始资料,请查看菲尔丁的论文。REST 限制和原则
如上所述,REST 定义了分布式系统的组件应如何相互交互。一般来说,这是通过请求-响应发生的。发送请求的组件称为客户端;处理请求并向客户端发送响应的组件称为服务器。请求和响应通常通过 HTTP(超文本传输协议)发送。通常,服务器是某种 Web 应用程序。客户不仅可以是任何东西,而且可以是很多。例如,从服务器请求数据的移动应用程序。或者是从网页向服务器发送请求以下载数据的浏览器。应用程序A可以向应用程序B请求数据。那么A相对于B来说是客户端,B相对于A来说是服务器。同时,A可以处理来自C、D、D等的请求。在这种情况下,应用程序 A 既是服务器又是客户端。这一切都取决于上下文。有一点很清楚:发送请求的组件是客户端。接收、处理和响应请求的组件是服务器。然而,并不是每个组件通过请求-响应进行通信的系统都是 REST(或 RESTful)系统。要使系统被视为 RESTful,它必须“符合”六个 REST 约束:1. 将架构引入客户端-服务器模型
这种限制的基础是需求的差异化。有必要将客户端接口的需求与存储数据的服务器的需求分开。这种限制增加了客户端代码向其他平台的可移植性,并且服务器部分的简化提高了系统的可扩展性。“客户端”和“服务器”之间的区别使得它们能够彼此独立地开发。2、缺乏条件
REST 架构需要满足以下条件。在请求之间,服务器不需要存储有关客户端状态的信息,反之亦然。来自客户端的所有请求都必须结构化,以便服务器接收完成请求所需的所有信息。这样,服务器和客户端都可以“理解”收到的任何消息,而无需依赖先前的消息。3. 缓存
客户端可以缓存服务器响应。反过来,这些必须显式或隐式指定为可缓存或不可缓存,以便客户端不会收到过时或不正确的数据来响应后续请求。正确使用缓存有助于完全或部分消除一些客户端-服务器交互,从而进一步提高系统性能和可扩展性。4、界面的统一性
REST 架构的基本要求包括统一、一致的接口。客户端必须始终了解它需要以什么格式以及向哪些地址发送请求,而服务器也必须了解它应该以什么格式响应客户端请求。这是客户端与服务器交互的统一格式,描述了什么、在哪里、以什么形式以及如何发送,是一个统一的接口5. 图层
层是指网络的层次结构。有时客户端可以直接与服务器通信,有时可以简单地与中间节点通信。使用中间服务器可以通过负载平衡和分布式缓存来提高可扩展性。让我们举个例子。让我们想象一个风靡全球的移动应用程序。它的组成部分是加载图像。由于有数百万用户,一台服务器无法承受如此大的负载。将系统分层可以解决这个问题。客户端向中间节点请求图片,中间节点向当前负载最少的服务器请求图片,并将图片返回给客户端。如果在层次结构的每个级别都正确应用缓存,则可以实现良好的系统可扩展性。6. 按需编码(可选限制)
此限制意味着客户端可以通过以小程序或脚本的形式从服务器下载代码来扩展其功能。REST 的好处
符合上述所有限制的应用程序具有以下优点: 可靠性(无需存储可能会丢失的客户端状态信息);- 性能(由于使用缓存);
- 可扩展性;
- 交互系统的透明度;
- 界面简单;
- 组件的可移植性;
- 易于做出改变;
- 发展、适应新要求的能力。
GO TO FULL VERSION