RESTFUL API學習教程

RESTFUL API學習教程

構建RESTful Web服務,像其他編程技能一樣,一部分是藝術,一部分是科學。隨着互聯網行業的發展,創造一個REST API變得更加具體與新興的最佳實踐。由於REST Web服務不遵循除了HTTP規定的標準,它建立在符合行業最佳實踐的REST風格的API來簡化開發,提高客戶利用率是非常重要的。目前,沒有很多REST API的指南,幫助孤獨的開發者RestApiTutorial.com正在致力於跟蹤REST API的最佳實踐,並提供資源,以便爲發展技術人才的快速參考和自我教育。我們將討論這兩種藝術和創建REST Web服務的科學。

—Todd Fredrich, RESTAPI 專家

一、            什麼是REST?

REST架構風格描述了六種約束。這些限制,適用於體系結構,最初是由Roy Fielding在他的博士論文提出,並定義了基於REST風格的基礎。

這六個約束:

1.統一接口

統一接口約束定義客戶端和服務器之間的接口。它簡化以及解耦架構,它使各部分獨立發展。統一接口的四項指導原則是:

⑴資源型

各個資源使用URI作爲資源標識符請求標識。資源本身是從被返回到客戶端的表示概念上是分開的。例如,該服務器不發送其數據庫中,而是表示一些數據庫記錄一些HTML,XML或JSON表示,例如,在芬蘭和編碼的​​UTF-8,取決於請求的詳細信息,並在服務器上執行。

⑵通過交涉的資源操作

當一個客戶機擁有資源,包括任何附加的元數據的表示,它有足夠的信息來修改或刪除在服務器上的資源,只要它具有這樣做的權限。

⑶自我描述性消息

每個消息包括足夠的信息來描​​述如何處理消息。例如,爲了調用可由因特網媒體類型(以前稱爲MIME類型)指定哪個分析器。響應還明確地表明自己的緩存能力。

⑷超媒體作爲應用狀態的引擎(HATEOAS)

客戶端通過正文內容,查詢字符串參數,請求頭和請求的URI(資源名稱)交付狀態。通過服務主體內容,響應代碼和響應報頭到客戶提供的狀態。這在技術上稱爲對超媒體(或超文本內的超級鏈接)。

除了上面的描述,HATEOS也意味着,在必要時,鏈接被包含在返回的主體(或報頭)提供的URI對象本身或相關的對象的檢索。我們將在後面詳細談論這個。

任何REST服務必須提供統一的接口是其設計的基礎。

2.無狀態

由於REST是代表性狀態傳輸的縮寫,無狀態是關鍵。從本質上講,這個什麼意思是無論是作爲查詢字符串參數URI的一部分,身體或頭,處理必要狀態書文請求被包含在請求本身中,。該URI唯一標識資源和正文包含資源的狀態(或狀態改變)。服務器執行處理它適當的狀態後,或事物的狀態上,通過頭,狀態和響應體傳回客戶端。

我們中的大多數人已經在行業內習慣於它爲我們提供了“會話”橫跨多個HTTP請求維護狀態的概念容器內的編程。在REST中,如果這種狀態必須跨越多個請求,客戶端必須包括服務器完成請求的所有信息,重新發送必要的狀態。無狀態使請求有更大的可擴展性,因爲服務器沒有維護,更新或傳達會話狀態。此外,負載平衡器也不必擔心無狀態會話系統的親和力。

那麼,什麼是狀態和資源之間的區別?狀態,或應用程序的狀態,是該服務器關心履行必要的請求數據爲當前會話或請求。一個資源或資源的狀態,例如定義存儲在數據庫中的資源表示中的數據。由於應用程序的狀態是可能由客戶端和每個請求的數據而改變的。資源狀態,而另一方面,每一個客戶之間的請求保持不變。

曾經有一個後退按鈕的Web應用程序,因爲它希望你做的事情以特定的命令在某一點上擅離職守的問題?這是因爲它違反了無狀態原則。有一些不遵守無狀態原則的情況下,如三足式OAuth,API調用速率限制,等等。然而,盡一切努力來確保應用程序的狀態不會跨越服務(S)的多個請求。

3.緩存

在World Wide Web上,客戶端可以緩存響應。響應因此必須,或明或暗地,將自己定義爲緩存,或者不用,以防止客戶端重複使用無效的或不適當的數據響應進一步的請求。管理良好的緩存部分或完全消除了一些客戶端 - 服務器交互,從而進一步提高可擴展性和性能。

4. 客戶端服務器

統一接口把客戶端從服務器分離出來。關注這分離裝置,例如,客戶不關心的數據存儲,這仍然是內部到每個服務器,這樣的客戶端代碼的可移植性提高。服務器不關心的用戶界面或用戶的狀態,從而使服務器可以是更簡單和更可擴展的。服務器和客戶端也可以被代替和獨立開發的,只要該接口不被改變。

5.分層系統

客戶端通常不能告訴服務器是否直接連接到後端服務器,或沿途的中介。中介服務器可能通過啓用負載平衡,並通過提供共享緩存提高系統的可擴展性。分層也可以強制執行安全策略。

6.按需代碼(可選)

服務器能夠暫時延長或通過轉移邏輯認爲能夠執行自主的一客戶端的功能。這方面的例子可能包括編譯的組件,如Java小程序和客戶端腳本如JavaScript。

這些約束條件符合,因此符合REST架構風格,可以使任何類型的分佈式超媒體系統具有強烈的增強特性,如性能,可擴展性,簡單性,可修改性,可見性,便攜性和可靠性。

注:REST架構的唯一可選的約束是按需寫代碼。如果服務違反任何其他約束,它不能嚴格稱作REST風格。

英文原網站:(http://www.restapitutorial.com/lessons/whatisrest.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章