2017-04-16 98 views

回答

0

REST是一種將客戶端與API分離的軟件設計,儘管它常常被誤解爲簡單的URI設計,因爲它通常基於HTTP。

使用支持REST的API和客戶端的好處很明顯,客戶端並不特別與任何API耦合,因此可以容忍在服務器端執行的更改,如將資源移動到不同的端點。就像瀏覽器能夠呈現無數個網頁的內容一樣,真正的RESTful客戶端應該表現完全相同,並且能夠與任何支持REST的API進行通信。它可以通過動態查找一些處理例程(類似於某些應用程序的插件)或回退到默認處理(報告錯誤或將未知數據顯示爲純文本)來實時學習如何處理新的內容類型。

API封裝器通常用於創建僅限於某個API的客戶端。這簡化了開發,因爲客戶端可以包含與API交互所需的某些邏輯,例如發送到服務器或從服務接收到的en/de-coding消息,列出所有可用的操作和類似的東西。通常,URI端點也可以通過屬性注入或硬編碼到應用程序中。此外,內容類型通常僅限於XML或JSON,並且關於如何處理響應的規則直接硬編碼到客戶端。所有這些步驟都將客戶端與API緊密結合。如果API更改(或被更多端點豐富),則必須更新API包裝器並將其發送給每個消費者,否則用戶將無法使用API​​或使用最新功能。

API包裝通常是爲API的使用量身定做的,而且通常也更容易實現。但是,它們也需要在API本身發生變化的情況下不斷更新,因爲包裝本身無法處理這些更改。另一方面,REST客戶的開發要複雜得多,因爲客戶必須知道(或學習)某個響應的語義,並且必須以某種方式推斷如何根據收到的響應採取行動。它的某些部分仍然是一個活躍的研究領域(至少在自動化處理中)。

正如你問及何時使用哪個:在你必須創建一個通用客戶端的情況下,一個REST客戶端肯定是正確的。然而,識別正確的語義處理將是這些客戶IMO的真正挑戰。如果您只需要爲客戶(或用戶)提供客戶端前端,並且API本身沒有太多變化,則封裝器可能會更容易實現。但是,請不要將這樣的客戶端稱爲RESTful!

相關問題