REST與SOAP之比較 REST篇

2021-05-22 11:43:23 字數 2631 閱讀 1663

rest能夠在計算機領域被廣泛採用,它走的道路是不同尋常的。這個術語是由roy fielding創造的。在web方面,我們必須承認fielding是非常精通的,他曾經幫助建立http 1.0規範,該規範從2023年開始就為web提供基本準則。

我有這樣乙個推斷,在計算機世界中,但凡那些讓開發人員記住的重要概念,都有乙個很酷的名稱首字母縮寫,否則的話,開發人員很快就會將其拋之腦 後。比如ajax、soap以及rest就證明了這一點。

rest能夠在計算機領域被廣泛採用,它走的道路是不同尋常的。這個術語是由roy fielding創造的。fielding畢業於irvine市加利福尼亞大學,在他的博士學位**中第一次提出了rest這個概念。在web方面,我們 必須承認fielding是非常精通的,他曾經幫助建立http 1.0規範,該規範從2023年開始就為web提供基本準則。他在web標準方面非常有經驗,這為他的這篇博士**奠定了堅實的基礎。

fielding指出,使用且符合代表性狀態傳輸(rest)設計約束的 web 上部署的元件,可以充分利用 web 的有用特性,全球資訊網(world wide web)才能夠達到最佳的工作效果。可以這樣理解rest——當乙個瀏覽器得到並且顯示構成html頁面的各個元素時,它正在獲取資源的當前狀態的表現形 式。在fielding的博士**中,他列舉了rest風格的設計約束,並且解釋了為什麼這些約束能夠充分利用web 的有用特性,使其達到最佳狀態,以及這些約束的關鍵所在。同時,在**中,他也包含了一些關於rest和某些目前的web風格之間 「不符合」的討論,以及這些web風格是如何導致設計無法利用web特性的。

fielding認為,對於使用http承載應用程式協議穿越防火牆,xml-rpc 和soap所採用的方式是「從根本上被誤導的概念。」它們所採用的方式違背了設立防火牆的概念,結果是,防火牆廠商為了保護系統需要偵察出所承載的協議。 由於大多數soap應用程式使用http都是為了穿越防火牆,因此,你可以發現rest與soap之間的衝突是從**開始的。fielding認為,如果 你打算使用http的話,就應該與充分利用http本身的含義。

rest風格強調,通過有限的操作或者是「動詞」以及乙個元件之間的標準介面,也就是http協議提供的藉口,來提公升客戶與服務之間的互動。通 過為每乙個資源分配其自己的url,來實現靈活性,rest可以呼叫包含上百個uri的資源型別的客戶,其中的關鍵是rest能夠給你無限多的「名詞」。 rest使用http的動詞——簡單的良定義操作集:post, get, put,delete進行請求和響應,從而避免了歧義。舉個例子,get只能夠簡單地返回資源的表現形式,而不能夠建立任何其他的內容。

在web發展的初期,由於人們都在試驗通過收集各種不同**的元素,從而把web應用程式融合在一起,有大量這種web服務的不成熟探索的例子 ——從http頁面中解析資訊,用於頁面建立者沒有計畫到的用途。這種「螢幕抓取」的web模擬表明,rest風格的方法是先於那些更加複雜的web服務 而出現的。

rest是一種風格而不是乙個標準

你可能會把軟體的架構風格當作對上層設計模式的抽象。然而,根據fielding所說,設計模式的堆砌並不等同於架構風格,因為模式是非常接近 於特定問題的。

由於rest是超文字系統的一種風格,而不是web服務的,因此,本文的標題「rest與soap之比較」就有些讓人誤解。然而,很多軟體設計 人員會將其混淆,他們在考慮如何建立web服務時,會得出這樣的結論:soap過於複雜,而簡單的類似於rest的設計卻更加適合。

rest與rpc風格之比較

遠端過程呼叫的架構,是應用在基於xml-rpc或者 rpc風格的soap的web服務中的,它卻有著完全不同的風格。客戶端發出命令,以使服務做出特定的操作。換句話說,rpc有動詞的傾向。

rest強調資源(名詞)有統一的介面以此來對它們定址,而rpc強調過程(動詞)有統一的介面來激發它們。乙個基於rpc的架構,動詞數量是 沒有限制的。rest說,我們使用四個動詞——非常熟悉,http標準的get、post、put以及delete——來進行請求和響應,rest使用資 源定址來處理其可變性。

乙個簡單的rest舉例

假設我們希望乙個web服務暴露一部分目錄,從這個目錄中,使用者將能夠得到一些描述、、安裝指令等等。為了得到數字「n1996-01」的 描述,使用者需要格式化乙個get請求,類似於下面的這個url:

在處理這個請求時,「/catalog」將對映到乙個服務中,之後,通過該服務對「description/n1996-01」進行解釋,從而 定位資源。在建立響應時,服務需要使用內容型別(content-type)的標頭檔案來指定返回格式。在這種情況下,假定返回格式是html或者xml, 客戶端能夠使用它來控制頁面的布局。如果要得到,那麼這個請求將對「/catalog/picture/n1996-01」進行定址,返回的響應將是 內容型別(content-type)。

rest的商業應用

最近幾年,大多數web商業企業開始對rest非常感興趣。google data api(目前還在測試版本)專門使用rest規則來提供簡單的協議。對服務的http get請求的響應結果是,採用atom或者是rss聯合格式的xml資料。google也使用atom以及post、put和delete操作來完成公共 協議。ebay服務提供通過使用不同語言工具來訪問服務,這些工具包括文件/文字風格的soap以及rest風格。

6 使用soap客戶端 SOAP與REST的對比

雙方程式設計師針對需求文件的一段對話 如果是soap協議的話能否提供一下對應的wsdl 乙方 呃呃呃 冪等性對同乙個系統,使用同樣的條件,一次請求和重複的多次請求對系統資源的影響是一致的。簡單物件訪問協議 object access protocol,soap 是一種基於 xml 的協議,可以和現存...

REST 與 SOAP誰更好,簡單小節

ibm的文章很細 rest黨 這篇被網上拆來拆去,考來考去 infoq的文章 一如既往的騎牆派 隨便看看 簡單小節一下 rest 以資源為中心 最貼近http標準,最貼近web服務 返回結構可以是任意自定格式 可以使用xmlhttpreqest,方便ajax 便於構建自己定製的分布式系統,便於新增安...

嘗試理解SOAP與REST和RESTful

通俗的語言解釋rest restful。一句話 url定位資源,用http動詞 rest不是rest這個詞,rest是指的是網路中client和server的一種互動形式,rest本身並不實用,實用的是如何設計restfulapi。server提供的restfulapi中,url中只適用名詞來指定資...