盡管SOA和微服務體系結構很流行,但是某些技術和實現細節經常被誤解或解釋不正確。在本文中,我們將回顧有關Web服務的七個事實,它們可以幫助開發人員更好地理解概念,并在需要時更好地準備面試問題。
RESTful服務絕對需要HTTP
RESTful Web服務未正式要求使用HTTP,但是如果使用HTTP方法,則應嚴格遵循其正式含義,以便客戶端無需付出額外的努力即可理解API(例如,不使用POST來更新數據,它應該僅用于創建資源,而并非天生具有冪等性)。
JSON是用于REST API的格式
REST API的最常見格式是JSON,但絕不是唯一可以使用的格式。REST模型非常適合物聯網。但是,就數據傳輸而言,JSON的面向字符串的有效負載在物聯網環境中的速度和易于解析方面與二進制編碼不匹配。在這種情況下,其他格式可能更合適。
HTTP PUT方法是部分更新
HTTP PUT方法是完全替換,而不是部分更新。這類似于覆蓋整個文件,而不是更新單個列。
RESTful Web服務使用瀏覽器Cookies來存儲狀態
客戶端和服務器之間的RESTful通信必須是無狀態的。不應使用Cookie,會話變量或任何其他有狀態功能。
SOAP協議僅對所有請求使用HTTP POST
根據SOAP規范,GET和POST方法均可用于通過HTTP交換SOAP消息。使用HTTP POST方法在HTTP請求的主體中傳達SOAP消息時,使用了一種稱為SOAP請求-響應消息交換模式的模式。在HTTP GET的情況下,使用一種稱為SOAP響應消息交換模式的模式。
REST服務只能用于簡單的CRUD
REST服務在實施CRUD操作時非常受歡迎,但絕不僅限于此。一個很好的例子是在Atlassian Jira中實現的狀態轉換。它提供了一個端點,首先根據其狀態獲取可能的過渡列表,第二步,可以將過渡作為HTTP POST請求執行。
REST是企業軟件體系結構中的通用集成樣式
如《企業集成模式》一書中所述,有四個頂級集成替代方案:文件傳輸,共享數據庫,遠程過程調用和消息傳遞。RESTful服務集成樣式分類為“遠程過程調用”。進行體系結構決策時,必須考慮所有四個選項的優缺點。