REST技術相較于其他相關技術更受歡迎。這是因為REST網絡服務消耗的帶寬更少,使其成為高效在線活動的理想選擇。RESTful Web 服務也可以使用 JavaScript 或 Python 等編程語言進行開發。

REST API 的工作原理是什么?

要了解 REST API 的工作原理,我們必須定義一些關鍵術語:

客戶端

API 用戶稱為客戶端。客戶端向 Web API 發送查詢以獲取數據或對程序進行修改。你的互聯網瀏覽器就是一個客戶端,它與各種Web API進行通信以獲取頁面內容。你的計算機接收到所需信息后,將其顯示在屏幕上。

以下是最流行的 HTTP 方法:

例如,對 Youtube API 的 HTTP 請求可以是特定視頻或帖子的 GET 請求資源,也可以是發布新照片的 POST 請求。您可以使用 POST 請求方法發布新文章。相應地,與自動應答實現集成的客戶網絡服務平臺可能會使用PUT指令來更新或刪除自定義問候語。

GET請求

POST 方法

POST請求是一種向服務器發送信息以添加或更新資源的方法。HTTP請求的請求體中包含發布到服務器端的數據:

響應體

響應體是RESTful API的重要元素之一。請求的數據包含在響應體中。響應體可能包括與輸出和輸出邏輯端口相關的數據。

資源

Web API能夠提供給用戶的任何數據都被視為資源。例如,在Facebook API中,個人、頁面、圖片或評論都可能被視為資源。每個資源都有一個特定的術語,即資源標識符。

Web服務器

Web服務器是一個程序,它接受客戶端的請求體,并存儲消費者請求的資源。服務器可以通過 API 與客戶端通信,而無需為客戶提供直接訪問其數據庫中存儲的信息的權限。當用戶通過RESTful網絡服務提交請求體時,服務器會向瀏覽器發送資源的狀態的標準化描述。

這意味著服務器不會直接將確切的資源提交給客戶端,而是反映其狀態,即在特定時間戳下資源的狀況。為了提高可讀性,響應會以輕量級格式返回。

JSON(JavaScript對象表示法)因其既易于人類閱讀又易于機器解析),并且在促進網絡可訪問性方面表現出色而得到廣泛使用。JSON主要用于在Web應用程序和客戶端應用程序中發送請求體。它與多種編程語言兼容。除了JSON之外,API的數據格式還包括XML、YAML、CSV、HTML和純文本。API用戶可以通過使用自定義媒體類型來選擇他們希望的任何數據格式。

REST API 的歷史

在REST之前,許多程序員不得不使用SOAP來整合API。構建、使用和調試SOAP是出了名的困難任務。幸運的是,在羅伊·菲爾德林(Roy Fielding)的指導下,一群程序員開發了REST,從而永遠改變了API環境。

以下是REST API隨時間發展的歷史脈絡:

REST 之前

程序員需要手動編寫一個包含遠程過程調用(RPC)的XML文件,以便使用SOAP連接Web API。之后,設計師會將他們的SOAP數據包發送到指定的端點。

2000 年

由 Roy Fielding 領導的程序員團隊選擇開發一個框架,使任何服務器都可以與其他服務器通信。他制定了REST API的規范。由于這些規范具有普遍性,因此軟件開發變得更加容易。

2002 年

eBay 在 2002 年開發了 RESTful API,向其可能受益的任何網站開放其市場。正因為如此,另一家電子商務巨頭 Amazon 對它產生了興趣,并于 2002 年發布了其 RESTful API。

在 2004-2006 年

Flickr 的 RESTful Web 服務于 2004 年發布,允許作者快速將照片添加到他們的網站和社交媒體帖子中。當 Twitter 和 Facebook 注意到大量程序員正在掃描網站并制作“Frankenstein”API 時,它們在大約兩年后都公開了他們的 API。

2006 年至今

RESTful Web 服務現在已被程序員廣泛接受,他們使用這些 RESTful Web 服務來提高其應用程序和網站的性能。AppMaster促進了合作,并簡化了API的構建,使您能夠更快地完成構建)。

REST API 有什么用途?

RESTful網絡服務的主要優勢之一是它提供了極大的靈活性,使您能夠更有效地使用這種RESTful API。以下是REST API用途的一些示例。

基于云的應用程序

由于其調用的無狀態性,REST API 在云應用程序中具有優勢。如果出現問題,無狀態模塊可以輕松重新安裝和擴展以滿足容量要求。結合了本地和基于互聯網組件的軟件程序是云應用程序。這種范式使用由Web瀏覽器訪問的遠程服務器和持續的互聯網網絡服務來執行指令。

云應用程序主機的傳統位置是由第三方云計算網絡運營商運行的遠程計算機系統。郵件、文檔共享和存儲、訂單輸入、庫存控制、Microsoft Word、客戶關系管理 (CRM)、信息收集以及財務和會計是使用基于云的應用程序執行的工作示例。

REST 應用程序編程接口 (API) 可用于連接外部信息源和存儲資源。程序員可以使用 REST API 將數據傳輸到其他程序以處理或分析計算,并將結果返回給軟件程序,從而使云應用程序變得更小。經過測試的 API 強制實施主動一致性,這可以加快生產速度并產生實際結果。

一個典型的云應用程序實例就是Google Docs或Office 365。要使用Google Docs或Office 365,您只需要一臺能夠運行搜索引擎和互聯網網絡服務的電腦。計算機網絡提供用戶界面和操作,包括信息存儲。您的公司可以使用云應用程序主機托管許多不同的云應用程

云服務

由于您需要通過API管理URL的處理方式來連接到資源,因此REST API對于云網絡服務也同樣有用。由于云應用程序的普及,RESTful網絡服務架構未來很可能會成為標準。程序員使用RESTful網絡服務通過互聯網連接到云服務。開發人員編寫代碼,使用互聯網提供商的API,提供必要的輸入和變量,然后檢查結果以確保操作按預期工作。

云服務是一種允許用戶通過互聯網訪問客戶端應用程序或網絡服務的云計算形式,如計算基礎設施、存儲系統或跟蹤系統。API(應用程序編程接口)定義了應用程序的功能和操作以及執行這些操作所需的具體細節)。為了維護客戶端隱私和安全,API 通常依賴于 REST 或簡單對象訪問協議 (SOAP) 互操作性和權限機制,如 OAuth 2.0

各種網絡服務被稱為“云服務”,它們在線提供給企業和消費者使用。這些網絡服務旨在提供快速、經濟的對工具和應用程序的訪問,而無需硬件或基礎設施。大多數員工使用云網絡服務處理從電子郵件到文檔協作的各種事務。

網絡應用

這些網絡API可以來自用戶網絡項目、iPhone應用、物聯網設備或Windows Mobile,因為REST不依賴于客戶端功能。您可以為您的業務創建架構,而不受特定客戶端框架的限制。

REST API 示例

讓我們討論一個 REST API 示例。點擊下面的鏈接向Open Trivia Database提出一個隨機智力問題:此類 RESTful Web 服務用于提供公共 Web API。您的計算機將以 JSON 格式顯示單獨的測驗問題及其回答。

使用任何 HTTP 瀏覽器(如 url),您可以發出以下查詢并在響應正文中收到響應:https://opentdb.com/api.php?amount=1&category=18

網絡服務的XML文件的響應體將包含所有員工的信息。

所有廣泛使用的編程方言和開發者工具都有 HTTP 客戶端庫,例如 JavaScript 中的 retrieve、Node.js 和 Deno 以及 PHP 中的 file get contents()。由于JSON是機器可讀的,因此可以在HTML或其他樣式中顯示之前讀取和使用JSON響應。

Rest API 和 REST API

隨著時間的推移,已經發展出許多數據傳輸方法。您可能遇到過 CORBA、SOAP 或 XML-RPC 等選項。大多數方法制定了嚴格的消息準則。Roy Fielding在2000年首次概述了REST,它比其他方法更簡單。

它是一組針對RESTful網絡服務的建議和限制,而不是一個規范。這些包括以下架構約束:

客戶端-服務器分區

在 REST 架構下,客戶端和網絡服務器只能單向通信:客戶端請求域控制器,控制器或服務器響應請求。網絡服務器無法提交請求,客戶也無法響應;客戶啟動所有連接。

RESTful網絡服務通過簡化它們之間的交互來保持客戶和服務器的隔離。客戶端計算機可以在不影響托管的情況下開發,服務器材料可以在不影響客戶的情況下更改。

統一接口

根據此策略,所有查詢和反應都必須遵循標準的 proweb 程序或設置其消息的樣式。應用程序和服務器是用各種編程語言開發的,這些語言彼此之間表現不佳。統一接口是任何客戶都可以用來與任何 REST API 交互的方言。

只有通過規范化的交互來翻譯應用程序之間的請求和響應才成為可能。微小的差異會導致混亂和信息丟失,當網絡API修改其請求程序時,解決方案將不得不升級它們的請求程序。一致的界面消除了這種可能性。

獲取 https://www.googleapis.com/youtube/v3/channels?part=contentDetails 的訪問權限

像所有REST客戶端應用一樣,這個請求包含兩個數據。HTTP 技術是 GET。這描述了客戶端希望對資源執行的操作。用戶可以使用 4 種基本的 HTTP 方法:

HTTP 或超文本傳輸協議是大多數 REST API 的通用語言。HTTP并不是為REST而設計的。此外,REST 接受此數據傳輸作為 REST 感知應用程序的標準。對于將 HTTP 與 REST API 結合使用,客戶端會以您可能熟悉的格式提交請求。例如,向 YouTube API 發出的視頻信號請求如下所示:

HTTP 方法指定要對特定資源采取的預期操作。HTTP 方法也稱為 HTTB 動詞。

URL 為 HTTP

統一資源標識符(URI),它標識了預期的資源)包含在 URL 中。在此方案中,URL 也是一個端點,因為它是 RESTful API 與服務用戶接觸的地方。

Query string(查詢字符串):URL 包含查詢字符串。查詢字符串用于定義參數,這些參數被賦予值。

在接收并驗證請求后,網絡服務器返回有關目標資源的數據。通常,數據以稱為JSON(JavaScript對象表示法)的結構返回。JSON以一種人類可以輕松閱讀的可移植格式呈現資源的所有組件。

統一接口的原則

uniform 接口必須遵循以下參數:

媒體類型是表示的數據格式的名稱。媒體類型標識一個定義,該定義概述了應如何處理描述。使用REST的網絡API就像超文本一樣。可以解決的每個數據項都有一個位置,無論是直接的(如通過鏈接和標識屬性)還是隱式的(例如,從媒體類型描述結構推導)。

無狀態

使用 RESTful API 時,所有客戶端請求都必須是臨時的。因此,每個查詢和響應正文都包含簽訂合同所需的所有數據,使得每個連接都是獨立的。服務器不保留以前的HTTP請求記錄;它將客戶端發出的每個請求視為全新的查詢。

由于服務器不必執行任何額外的任務來獲取歷史數據,因此無狀態傳輸可以顯著減少服務器所需的存儲量,并增加響應可接受的可能性。這保證了這些交互的可擴展性:當他們的軟件擴展并發出 HTTP 請求時,程序員不必擔心使用更多的存儲空間或給服務器帶來負擔。

分層的

到目前為止,我們已經將 Web API 查詢定義為簡單的客戶端-服務器交換,盡管這有點過于簡單化了。在這兩個組織之間,通常有更多的服務器。這些平臺或層用于管理和分散流量、添加保護以及執行各種其他關鍵任務。

根據此概念,無論中間存在多少層,發送給用戶和目標服務器之間的消息必須以相似的方式結構化和處理。額外的層次應該與客戶互動兼容。遵循這一規則的程序員可以更改服務器系統,而不會影響基本請求-響應過程。

可緩存

當客戶瀏覽網站時,當內容保存在客戶的計算機上時,就會發生緩存。當用戶稍后再次訪問該站點時,緩存材料會從內部存儲器中快速加載,而不是再次從服務器下載。大多數大型網站都使用緩存來減少頁面加載時間,同時節省服務器空間和帶寬。

在開發 REST API 時,會考慮數據緩存。服務器給客戶的響應應該說明給定資源是否可以存儲以及可以存儲多久。

按需代碼

最后一個 REST 原則是不必要的。如果請求,API 的響應可以包含供客戶端使用的軟件代碼。因此,客戶可以在其后端執行客戶端應用程序或程序。

如果 API 符合這組準則,則 API 被視為 RESTful API。但是,這些準則為程序員提供了很大的自由來修改其 RESTful API 的功能。REST API 與另一種流行的 Web API 技術簡單對象訪問協議的不同之處在于它們更靈活 (SOAP)。

端點共識

請考慮以下端點:

所有這些都是客戶端 123 檢索數據的合法方法。當有更復雜的程序時,可能性的數量就會增加。例如,從條目 51 開始,按相反順序顯示 10 個姓氏以“A”開頭并為公司運營的人員。

最后,您如何構建URL并不重要;您的RESTful API中的一致性很重要。在擁有許多程序員的大型軟件系統中,這并不容易實現。RESTful API修改是不可避免的,但絕不能拒絕端點URL,因為這將導致依賴它們的應用程序停止工作。

REST API 版本控制

版本控制API是一種常見做法,以防止不兼容性。例如,/2.0/user/123替換了/user/123。舊端點和新端點都可以繼續運行。因此,這迫使需要維護過去的重要APIs。舊版本最終可以被退役,但這個過程需要仔細考慮。

REST API 身份驗證

任何設備都可以使用查詢 API 在未經授權的情況下下載 quip。讀取私有信息或允許編輯和刪除查詢的 API 不支持此功能。與 RESTful Web 服務位于同一域中的客戶端程序的發送和接收 Cookie 的方式與 HTTP 請求相同。(請注意,必須在早期站點中為 Fetch() 指定 privileges restart 選項。可以驗證 API 查詢以確認用戶已登錄并具有所需的權限。

HTTP 基本身份驗證:第三方程序必須使用不同的審批方案。一些流行的身份驗證方法是:

使用場景會影響API的認證方式:

REST API 安全性

RESTful網絡服務為與您的軟件互動并影響其行為提供了另一種方式。即使您的主機不是高等黑客攻擊目標,行為不端的用戶也可以每秒提交數百個請求并將其折疊。本文不涉及安全性,但標準的最佳程序包括:

多個請求和不必要的數據

RESTful Web 服務的部署存在限制。響應可能包含比您請求的更多信息,或者需要多個請求才能獲取所有信息。考慮一下允許用戶訪問創作者和書籍信息的 RESTful Web 服務;客戶可以:

如果這種情況經常使用,則可以修改 RESTful Web 服務以包含其生成的每本書的所有作者信息,包括姓名、性別、國籍、傳記等。可能會提供關于他們以前書籍的更多信息,盡管這樣做會大大增加響應負擔。API可以被修改為使作者信息成為可選的。Author details=full以避免不必要的大答案。API設計者必須支持的選項數量可能是壓倒性的。

結束語

現在,您全面了解了 REST API、REST API 的運行方式、REST API 示例、REST API 的用途、架構約束以及本教程中介紹的其他主題。程序員可能會覺得學習 API 既困難又令人生畏,但無代碼平臺 AppMaster 創建了一個新的可訪問的 REST API 庫,您可以在其中加深對一系列 REST API 的認識,以支持您進一步的專業發展。

在 AppMaster,我們試圖提高 API 的可訪問性和可用性。我們希望您了解、試驗并意識到在您的職業和個人生活中使用 API 軟件的好處。為了幫助您更快地設計更好的 Web API,AppMaster提高了協作效率并自動化了API生命周期的每個階段。繼續創造、進步并拓寬你對REST APIs的理解。

原文鏈接:https://appmaster.io/blog/rest-api-examples

上一篇:

什么是 REST API?示例、用途和挑戰

下一篇:

供應鏈管理中的 EDI 與 API 趨勢解析
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費