回答
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!
- 1. 使用WCF消費REST API有什麼好處嗎?
- 2. 爲什麼在REST更好的情況下使用rest api? NoSQL
- 3. 使用oozie包有什麼好處?
- 4. 通過Socket直接使用TcpClient有什麼好處?
- 5. SQLite C API中使用sqlite3_data_count()比sqlite3_column_count()有什麼好處?
- 6. asp.net web api控制器接口有什麼好處嗎?
- 7. 禁用對REST API的直接請求
- 8. 在接口上使用@Deprecated表示法有什麼好處?
- 9. 在PHP中使用CURL的包裝與直接使用它的好處是什麼?
- 10. 爲什麼Android的REST API能夠直接連接到GAE Web應用程序?
- 11. 的REST API直接刷卡泰國
- 12. 什麼是Bugzilla REST API URL?
- 13. Rest API究竟是什麼
- 14. REST和API有什麼區別?
- 15. 在bufio.Reader中包裝bufio.Scanner的閱讀器有什麼好處嗎?
- 16. 使用REST API
- 17. 使用REST API
- 18. OneDrive API - 使用REST API
- 19. 使用Highrise API包裝
- 20. 包括在WordPress REST API postmeta
- 21. 是否有可用於Salesforce REST Api的c#包裝?
- 22. REST API從API連接獲取統計api使用數據
- 23. Paypal是否提供直接借記卡API的Paypal Rest API?
- 24. 在Neo4j REST API上使用TIMESTAMP()
- 25. Facebook Graph API和REST API的登錄機制有什麼區別?
- 26. 解析REST API中的X-Parse-REST-API-Key是什麼?
- 27. 使用Teamcity REST API,如何使用teamcity rest API獲取nuget包列表?
- 28. 我可以直接從手機使用woocommerce REST API
- 29. 在私有常量上使用'static'有什麼好處?
- 30. 爲什麼在非ORM調用中使用與django相關的REST API包?