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






