http、soap和rest區別

http

http是標準超文本傳輸協議。使用對參數進行編碼並將參數作爲鍵值對傳遞,還使用關聯的請求語義。每個協議都包含一系列HTTP請求標頭及其他一些信息,定義客戶端向服務器請求哪些內容,服務器用一系列HTTP響應標頭和所請求的數據進行響應。HTTP-GET 使用 MIME 類型application/x-www-form-urlencoded(將追加到處理請求的服務器的 URL 中)以 URL 編碼文本的形式傳遞其參數。 URL 編碼是一種字符編碼形式,可確保傳遞的參數中包含一致性文本,例如將空格編碼爲 %20,其它符號轉換爲%XX,其中XX爲該符號以16進製表示的ASCII(或ISOLatin-1)值。 追加的參數也稱爲查詢字符串;HTTP-POST參數也是 URL 編碼的,但是,鍵/值對是在實際的 HTTP 請求消息內部傳遞的,而不是作爲 URL 的一部分進行傳遞。

SOAP

SOAP(Simple Object AccessProtocol)簡單對象訪問協議。soap請求 (Simple Object Access Protocol,簡單對象訪問協議) 是HTTP POST的一個專用版本,遵循一種特殊的xml消息格式Content-type設置爲: text/xml任何數據都可以xml化。
這裏寫圖片描述
所有的 SOAP 消息發送都使用 HTTP POST 方法,並且所有 SOAP 消息的 URI 都是一樣的,這是基於 SOAP 的 Web 服務的基本實踐特徵。

REST

REST(Representational State Transfer)一種輕量級的Web Service架構。可以完全通過HTTP協議實現。其實現和操作比SOAP和XML-RPC更爲簡潔,還可以利用緩存Cache來提高響應速度,性能、效率和易用性上都優於SOAP協議。
REST架構對資源的操作包括獲取、創建、修改和刪除資源的操作正好對應HTTP協議提供的GET、POST、PUT和DELETE方法

(一) 首先REST只是一種風格,不是一種標準
(二) REST是以資源爲中心的
(三) REST充分利用或者說極端依賴HTTP協議

設計原則:
1.1.顯式地使用不同的 HTTP 請求方法
我們在 Web 應用中處理來自客戶端的請求時,通常只考慮 GET 和 POST 這兩種 HTTP 請求方法。實際上,HTTP 還有 HEAD、PUT、DELETE 等請求方法。而在 REST 架構中,用不同的 HTTP 請求方法來處理對資源的 CRUD(創建、讀取、更新和刪除)操作:
a.若要在服務器上創建資源,應該使用 POST 方法。
b.若要檢索某個資源,應該使用 GET 方法。
c.若要更改資源狀態或對其進行更新,應該使用 PUT 方法。
d.若要刪除某個資源,應該使用 DELETE 方法。
1.2.無狀態
傳遞User credentials是Restful,而傳遞SessionID是Un-Restful的,因爲session信息保存在服務器端。
**無狀態請求:**Server不保存任何請求狀態信息,Client的每一個請求都具有User credentials等所需要的全部信息,所以能被任意可用的Server應答。
**有狀態請求:**Server保存了Client的請求狀態,Server會通過Client傳遞的SessionID在Server中的Session作用域找到之前交互的信息,並以此來實現應答。所以Client只能由某一個Server來應答。
1.3.公開目錄結構式的 URI(通過邏輯URI定位資源)。
這裏寫圖片描述

Restful與SOAP的區別

1、安全性:SOAP會好於restful
SOAP 不僅像 REST 一樣支持 SSL,而且還支持增加了很多企業級安全特性的 WS-Security(WS = web services)。因此它能夠提供通過中介的身份驗證,而不僅僅是端對端的驗證(SSL)。此外,SOAP 還提供了一個數據完整性和數據隱私性的標準實現。叫它“企業級”並不是說它更安全,它只是簡單提供了典型互聯網服務不需要的幾個安全工具而已,事實上這些工具只有在很少的一些“企業級”場景下才能派的上用場。
2、效率和易用性(REST更勝一籌)
3、成熟度(總的來說SOAP在成熟度上優於REST)
4、REST 允許很多不同的數據格式而 SOAP 僅支持 XML
5、REST 具備更好的性能和可擴展性。REST 讀取可以被緩存起來,而基於 SOAP 的讀取無法被緩存。

REST與HTTP差別

http只是數據交換的方法,支持服務器與客戶端間數據交換,這裏的服務器並不是現實中服務器的定義。任何提供服務的電腦都可以被稱爲服務器。無論你用什麼機器向服務器發出請求,你使用的機器都將充當客戶機的角色。而rest會有一些封裝,rest應用在服務器上,而http是應用在服務器與訪問者之間,是客戶端程序與服務器交換數據的方法

參考:http://blog.csdn.net/roguestudys/article/details/52818810
參考:https://www.ibm.com/developerworks/cn/webservices/0907_rest_soap/

發佈了92 篇原創文章 · 獲贊 29 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章