REST 概述
REST 表示REpresentational State Transfer ,並通過創造羅伊菲爾丁在他的博士論文的建築風格和基於網路的軟體架構的設計 。在其中,他確定了具體的建築原則,如:
-
可定址資源:REST 中資訊和資料的關鍵抽象是一種資源,每個資源必須通過 URI 進行定址。
-
統一的,受約束的介面:使用一小組明確定義的方法來操作我們的資源。
-
面向表示:一個 URI 引用的資源可以有不同的格式,不同的平臺需要不同的格式,例如瀏覽器需要 HTML,JavaScript 需要 JSON 和 Java 應用程式可能需要 XML,JSON,CSV,文字等。所以我們與服務互動使用該服務的表示。
-
無狀態溝通:無狀態應用程式更容易擴充套件。
-
超媒體作為應用程式狀態引擎:讓我們的資料格式驅動應用程式中的狀態轉換。
這些架構原則的集合稱為 REST。REST 的概念受到 HTTP 的啟發。向我們提供 REST 的 Roy Fielding 也是 HTTP 規範的作者之一。
Web 服務和 RESTful Web 服務是暴露於 Internet 以進行程式設計訪問的服務。它們是線上 api,我們可以從我們的程式碼中呼叫它。有兩種型別的 大Web 服務 SOAP 和 REST Web 服務。
RESTful Web 服務 :通過應用 REST 體系結構概念編寫的 Web 服務稱為 RESTful Web 服務,它關注系統資源以及如何通過 HTTP 協議將資源狀態傳輸到不同的客戶端。
本文件僅關注 RESTful Web 服務,因此我們不會深入瞭解 SOAP WS 的細節。
設計 RESTful Web 服務時沒有嚴格的規則
- 沒有協議標準
- 沒有通訊渠道標準
- 沒有服務定義標準
但 SOAP 對所有這些都有嚴格的規則。所有 SOAP Web 服務都遵循 SOAP 規範,該規範規定了每個 SOAP Web 服務應該是什麼。此規範由委員會開發和管理,如果 SOAP WS 甚至不遵循單個規則,那麼根據定義,它不是 SOAP。
RESTful Web 服務的概念
在設計/開發 RESTful api 時,需要考慮的指南很少:
- 基於資源的位置/ URI
- 正確使用 HTTP 方法
- HATEOAS(超媒體作為應用程式狀態的引擎)
開發 RESTful API 時的主要方法應該是使 API“儘可能地保持 REST”。