RESTful API理解

1.什麼是RESTful API

API?

在瞭解什麼是RESTful API之前,我們先了解什麼是API?即Application Programming Interface,應用程序編程接口,通俗的講,就是爲了方便開發者使用,將代碼封裝成一個方法,這個方法可以具有單獨的功能,eg:初始化函數,也可以是各種功能的集合,eg:工具類,還有就是我們經常使用的JDBC接口,JDBC接口封裝了連接數據庫的方法,開發者只需要調用該接口的方法,既可以連接數據庫。

我的理解是:上面的這些對API的理解,更多的是單一的,狹義的,而接口其實可以理解成一個功能的入口,這裏強調功能和入口, 功能即接口是有目的性的,即這個接口是對某個功能的體現,其次是入口,即通過這個接口,我們可以達到我們的目的。而RESTful API中,提到的Web API ,更多的是指URL,就是一個通過這個接口,可以獲取Web中的資源或者對其資源進行相應的操作。

通過對API的理解,讓我想到封裝的特性,封裝就是將類的變量和方法進行隱藏,可以通過private關鍵字,以及方法等手段,當初的我對封裝的理解就是這樣,但是當學習到接口時,這個時候也體現出封裝的特點,即接口是對方法的封裝,將方法的具體實現進行隱藏,通過接口,讓我對封裝有更深的理解,其主要是因爲站在不同的角度。

REST

REST術語的來自Roy T.Fielding的博士的論文,REST(Representational state transfer),表述性狀態轉移,理解表述性狀態轉移.REST一種原則,架構。“REST不是一種協議,也不是文件格式,更不是開發框架,它是一系列的設計約束的集合:無狀態性,將超媒體作爲應用狀態的引擎等,我們將這些約束統稱爲Fielding約束。”引用《RESTful Web APIs》。

首先解釋一下幾個概念:

⑴application state(應用狀態):從瀏覽器的角度考慮,通過URL獲取到資源的信息的頁面,

⑵資源狀態:即從服務器的角度考慮,存儲在服務器的資源,

⑶表述:即瀏覽器發送請求後,服務器發送給瀏覽器的響應(通常是一個HTML文檔,或圖片,其他),將這個文檔稱爲資源的表述。

⑷狀態轉移:即從一個應用轉檯轉換到另一個應用轉檯,例如從一個頁面轉換到另一個頁面。

因此,對REST的通俗理解是,REST是一種約束,即如何從一個Web轉移到另一個Web頁面中所使用的規範。即我的理解是REST是一種有關如何獲取資源,操作資源,顯示資源的規範。

RESTful API

RESTful API,即以REST構建的API。即通過此API可以獲取,操作,顯示Web信息。

2.API和消息,超媒體

表述

表述,就是資源的表示方式,例如文檔,圖片,等,當然也可以採用XML文檔,JSON對象,逗號分隔的數值等。

HTTP消息

在REST中,客戶端和服務器端互相發送消息需要遵守預定的協議的消息來進行交互,在Web API中,這個協議就是HTTP,在RESTful API架構並未採用HTTP。

HTTP標準定義了8中不同類型的消息,即GET,HEAD,PUT,POST,DELETE,OPTIONS,CONNECT,TRACE,非標準:PATCH,LINK,UNLINK;

GET:獲取資源的描述;

HEAD:獲取相應的報頭信息;

PUT:用給定的表述信息替換資源的當前狀態;

POST:創建新的資源;

DELETE:銷燬資源;

OPTIONS:獲取這個資源所能響應的HTTP方法列表;

LINK:將其他資源連接到當前資源;

UNLINK:銷燬當前資源和其他某些資源的連接關係;

CONNECT和TRACE只用於HTTP代理。等等等。

冪等性:

冪等的概念來自數學,零乘運算是一個冪等運算,即一旦將一個數值乘以0,就可以無限次的乘以0,得到的還是同樣的結果。HTTP DELETE方法就相當於用零乘以一個資源。 

DELETE方法是冪等的。冪等性就是發送兩次請求對資源狀態的影響和發送一次請求的影響是一樣的。例如發送一個DELETE請求,但網絡連接超時,並沒有響應消息,所以無法知道DELETE操作是否順利執行完成,只需要在發送一條DELETE請求並不斷重試直到收到響應信息就可以。執行兩次DELETE請求並不比只執行一次造成更多的影響。

超媒體

“超媒體是超級媒體的縮寫。超媒體是一種採用非線性網狀結構對塊狀多媒體信息(包括文本、圖像、視頻等)進行組織和管理的技術。”--來自百度百科。超媒體是一種策略,方法,可以由多種技術以不同的方式來實現。超媒體將資源互相連接起來,並以及其可讀的方式來描述他們的能力。我的理解是:超媒體是一種組織信息,管理信息,顯示信息的多種技術的組合。

HTML:在Web中,一般將HTML作爲超媒體的格式,資源的標識方式還有XML,JSON等。

URI:用來標識資源。URI和URL的區別:

⑴URI是統一資源標識符,URL統一資源定位符,URL和URI都可以用來標識資源的簡單字符串,而每個URL都是一個URI,它們在同一個標準中,RFC 3986;

⑵URI只是一個標識,URL是一個可以被引用的標識;URI包括URL,有些時候,我們寫的是URI,但是更多的指的是URL.

3.總結

通過對RESTful API知識的梳理,重要的是它不是一門技術,而是一些約束,規範,如何在網頁顯示信息,以及頁面(狀態)之間如何轉移,如何獲取信息等, 在此約束上,涉及的技術很多,如HTML,HTTP協議,URL,客戶端,服務器等。因此瞭解RESTful有助於對Web的運行,原理加深理解。

 

 

借鑑《RESTful Web APIs》    如有異議,敬請指出,與君共勉。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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