JavaRush /Java Blog /Random-TW /休息概述。第 1 部分:什麼是 REST

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

在 Random-TW 群組發布
大家好,今天我們要研究一個非常有趣、也是最重要的勞動市場熱門主題—REST。 休息概述。 第 1 部分:什麼是 REST - 1我們將 REST 的概述分為三個部分:
  1. 在第一部分中,我們將介紹 REST 的歷史並描述 REST 所依據的原則。

  2. 在第二部分中,我們將了解客戶端和伺服器之間如何透過 HTTP 協定進行通訊。

  3. 在第三部分中,我們將編寫一個小型 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 的好處

符合上述所有限制的應用程式具有以下優點: 可靠性(無需儲存可能會遺失的用戶端狀態資訊);
  • 性能(由於使用緩存);
  • 可擴展性;
  • 交互系統的透明度;
  • 介面簡單;
  • 組件的可移植性;
  • 易於做出改變;
  • 發展、適應新要求的能力。
第 2 部分:客戶端和伺服器之間的通訊 第 3 部分:在 Spring Boot 中建立 RESTful 服務
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION