CodeGym /Java 博客 /随机的 /REST 概述。第 1 部分:什么是 REST?
John Squirrels
第 41 级
San Francisco

REST 概述。第 1 部分:什么是 REST?

已在 随机的 群组中发布
你好!今天我们将学习一个非常有趣的话题,最重要的是,在劳动力市场上需求量很大:REST。 REST 概述。 第 1 部分:什么是 REST? - 1 我们将对 REST 的概述分为三个部分:
  1. 在第一部分中,我们将介绍 REST 的历史并描述 REST 所基于的原则。

  2. 在第二部分,我们将考虑客户端和服务器之间如何通过 HTTP 协议进行通信。

  3. 第三,我们将编写一个小型 RESTful 应用程序,我们将使用名为“Postman”的程序对其进行测试。

本文适用于熟悉以下术语的读者:
  • HTTP
  • 网址和 URI
  • JSON 和(在较小程度上)XML
  • 依赖注入

第 1 部分。什么是 REST?

REST,就像 IT 世界中的许多东西一样,是一个首字母缩写词。它源自“REpresentational State Transfer”。这是一种用于计算机网络中分布式系统组件之间交互的架构风格。简而言之,REST 决定了系统不同组件之间交互(交换数据)的方式,每个组件都可以物理地位于不同的地方。这种架构风格是设计分布式系统时遵循的一组一致的约束。这些约束有时被称为 REST 的指导原则。数量不多,只有6个,待会儿再说。
考虑到 REST 原则构建的应用程序,即那些不违反 REST 约束的应用程序,被称为“RESTful”。

休息的历史

REST 一词是由 HTTP 协议的创建者之一 Roy Fielding 在他的博士论文中引入的。2000 年发表了题为“架构风格和基于网络的软件架构的设计”的论文。尽管 REST 这个词仍然可以称为年轻的,但它所代表的概念是万维网的核心。我们不会深入探讨这个词的历史。如果您想深入了解主要来源,请查看 Fielding 的 论文

REST 约束和原则

如上所述,REST 定义了分布式系统的组件应该如何相互交互。通常,这是通过请求-响应过程发生的。发送请求的组件称为客户端,处理请求并向客户端发送响应的组件称为服务器. 请求和响应通常通过 HTTP 协议发送。HTTP 代表超文本传输​​协议。通常,服务器是一些 Web 应用程序。客户端几乎可以是任何东西。例如,从服务器请求数据的移动应用程序。或者从网页向服务器发送请求以下载数据的浏览器。应用程序 A 可以向应用程序 B 请求数据。在这种情况下,A 是 B 的客户端,B 是 A 的服务器。同时,A 可以处理来自 B、C、D 等的请求。在这种情况下,应用程序 A 既是服务器又是客户端。一切都取决于上下文。有一件事是肯定的:发送请求的组件是客户端。接收、处理和响应请求的组件是服务器。然而,并非所有组件通过请求-响应过程进行通信的系统都是 RESTful 系统。对于一个被认为是 RESTful 的系统,它必须符合六个 REST 约束:

1.客户端-服务器架构

此约束与关注点分离有关。有必要将客户端接口的要求与存储数据的服务器的要求分开。这种约束使得客户端代码更易于移植到其他平台,并且简化服务器端提高了系统的可扩展性。区分“客户端”和“服务器”允许它们彼此独立开发。

2.无国籍

RESTful 架构需要满足以下条件。在两次请求之间,服务器不得存储有关客户端状态的信息,反之亦然。来自客户端的所有请求的组合方式必须能够为服务器提供完成请求所需的所有信息。因此,服务器和客户端都可以“理解”任何收到的消息,而不依赖于先前的消息。

3.可缓存

客户端可以缓存服务器响应。反过来,这些必须明确或隐含地指定为缓存或非缓存,以便客户端不会收到过时或不正确的数据以响应后续请求。正确的缓存有助于完全或部分消除一些客户端-服务器交互,进一步提高系统性能和可扩展性。

4.统一界面

RESTful 架构的基本要求包括统一的接口。客户端必须始终了解发送请求时需要使用的格式和地址,反过来,服务器也必须了解响应客户端请求时应使用的格式。这种描述什么、在哪里、以什么形式以及如何发送数据的一致的客户端-服务器交互是一个统一的接口。

5.层

层是指网络的层次结构。有时客户端可以直接与服务器通信,有时它只与中间节点通信。由于负载平衡和分布式缓存,中间服务器的使用可以提高可扩展性。让我们举个例子。想象一下一个风靡全球的移动应用程序。该应用程序的一个组成部分涉及加载图片。它的用户数以百万计,因此单个服务器无法处理如此繁重的负载。将系统分层将解决这个问题。如果客户端向中间节点请求图片,则中间节点向服务器请求此时负载最少的图片,并将图片返回给客户端。如果缓存在层次结构的每个级别都正确应用,

6.按需打码(可选)

此约束意味着客户端可以通过以小程序或脚本的形式从服务器下载代码来扩展其功能。

RESTful 架构的优势

符合上述所有约束的应用程序具有以下优点: 可靠性(无需保存可能丢失的客户端状态)
  • 性能(由于使用缓存)
  • 可扩展性
  • 透明沟通
  • 简单的界面
  • 可移植性
  • 轻松做出改变的能力
  • 发展和适应新要求的能力
REST 概述。第 2 部分:客户端和服务器之间的通信 REST 概述。第 3 部分:在 Spring Boot 上构建 RESTful 服务
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION