JavaOne 2013:將REST與JSON相結合以創建API
譯文創建一套可通過Web進行訪問的應用程序編程接口并不困難,但打造一套既運作良好又穩定可靠的API卻沒那么容易,Stormpath公司首席技術官Les Hazlewood在JavaOne 2013大會上表示。為了順應與會觀眾們的強烈呼聲,Hazlewood于本周二重返JavaOne舞臺、向大家介紹了如何利用JAX-RS與Jersey創建優秀的REST + JSON API。
“一款出色的具象狀態傳輸(簡稱REST)API從表面上看應該很簡單,即使其后端機制實際相當復雜,”Hazlewood在介紹環節之前的記者采訪中指出。如果一款API的專注重點在于收集信息并為各條信息提供各自獨立的代表,那么只要削減API中的收集及搜索機制(而非羅列所有已經采用的對象),我們就能獲得一款簡潔而出色的方案,直觀而絕不復雜。
Les Hazlewood
在問答環節中,Hazlewood深入探討了API最佳實踐、REST API的優勢與劣勢以及JavaScript Object Natation(簡稱JSON)等話題。
為什么Java開發人員樂于嘗試REST API?
Les Hazlewood: REST是一套以現有HTTP為基礎建立起來的架構風格。在HTTP規范當中,我們交換數據以及創建、讀取、更新與刪除數據的方式已經被確定下來。在互不相干的設備中創建即讀即刪信息時,REST能夠負責決定特定情況該如何處理。
這正是REST的主要作用;負責此類操作在互不相干的設備間執行時該如何處理。由于REST以HTTP為基礎,因此我們可以在Linux設備、Windows設備與蘋果Mac設備之間進行通信。總之,REST無需局限于特定平臺或者供應商類型——由于HTTP無處不在,因此REST也能夠廣泛起效。所有編程語言,包括Python、PHP、Java以及C#,都能夠與REST并行協作。
從各個方面來說,REST往往由于自身的迷惑性而被看得過于簡單。每個人都自認為了解HTTP,因為這正是Web瀏覽器的表面方式。技術人員了解HTTP協議、GIT以及POST,因為他們已經以Web形式與之接觸多年。而由于REST使用HTTP協議,開發人員會習慣性地低估其實際復雜性。事實上,如今的REST服務已經遠遠超過XML(過去一直搭配SOAP,即簡單對象訪問協議)的范疇。
使用REST會遇上哪些難點?
Hazlewood:這正是我來到這里向大家進行介紹的原因。REST是一種架構風格,但其使用方法還缺乏正式的標準或者規范。要了解這種風格,我們需要為其添加注釋,否則不同使用者對于功能的理解與效果會出現一定程度的偏差。這是因為REST并非一套能夠在設備之間直接照搬的規范,而且人為因素的介入也會引發歧義。在這樣的情況下,要正確或者輕松使用REST將變得充滿困難。REST與JSON都很簡單,HTTP也很簡單,但在將這幾種機制結合起以解決特定問題時,大家會發現自己很難找到既定的成熟指導。
您在JavaOne介紹環節中建議將JSON與REST相結合,還有其它什么理由嗎?
Hazlewood: REST與JSON提供了更為人性化的數據表示方式;數據看起來不再像XML格式那樣擁擠;更便于我們直接用肉眼查看。而這正是JSON被廣泛采用的真正原因。
JSON是一種語法規則。簡單概括,它的內容就是字符串、數字、空、非空。它允許大家以非常簡單的格式通過少量元數據表示復雜的情況。我們能夠輕松將其使用在多種不同環境之下。它易于機器解析,也同樣適合人們直接閱讀。
JavaScript是目前世界上最具影響力的重要編程語言之一。即使是在主要由Java、Python或者C#編寫的應用程序中,一旦涉及網頁或者直觀用戶界面,那么出場解圍的也必然是JavaScript。JSON與JavaScript完全兼容,任何擁有JavaScript編程經驗的技術人員都能輕松掌握JSON。如果大家已經跟JavaScript打過交道,那么將其與API相整合也絕非難事。如果API返回JSON且大家已經利用JavaScript編寫代碼,那么編程語言本身就會了解如何闡釋來自服務器的數據。JSON借助人氣極盛的JavaScript處理數據交換(而不僅是寫入軟件)任務。
何時適合使用JSON,何時不適合?
Hazlewood:很顯然,XML在數據復制架構方面的表現更出色。XML文檔中包含的信息更豐富,而且其中的數據類型劃分也更為高效。XML非常適合處理數據交換任務,但糟糕的易用性往往令開發人員望而卻步。JSON內容適合直接閱讀,XML在設計方面則更為復雜。JSON的語法簡單易懂。說起語言設計,JSON中的核心元素非常有限,全部開發成果都以此為基礎。由于其出色的簡單特性,我們能夠輕松對其加以操控及理解。不過在設備消耗信息方面,JSON的表現遠不如XML。XML更適合設備直接處理。
原文鏈接:http://searchsoa.techtarget.com/news/2240205998/JavaOne-2013-Pairing-REST-and-JSON























