CodeGym/Java Blog/Toto sisi/REST 概述。第 1 部分:什麼是 REST?
John Squirrels
等級 41
San Francisco

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

在 Toto sisi 群組發布
個成員
你好!今天我們將學習一個非常有趣的話題,最重要的是,在勞動力市場上需求量很大: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 服務
留言
  • 受歡迎
你必須登入才能留言
此頁面尚無留言