筆記:RESTful API
最近有機會看RESTful API的設計,雖然自己沒有參與,但是也把握機會看了一遍。首先先從Http協定說起,Http協定不只用在傳輸Web的內容上,也有很多Client應用程式與Server溝通都使用Http協定,例如手機App,遊戲,甚至一些雲端的服務都是透過Http協定來提供服務。但是Http只是協定,至於要以什麼順序傳,傳什麼東西,其實都是自由的,所以也造成沒章法隨便亂寫的狀況,而REST風格是一個業界公認,我們自己也可以理解接受的一種解決方案。遵照REST的風格,做出來的架構因為Server不需要記錄執行狀態,所以天生就有較好的擴展性,簡單說,只要後端資料庫夠強,就可以一直水平擴充Web Server,透括負載分配進來Web Server的請求,就可讓支援使用者數量上到百萬。這就是無狀態設計屌的地方。 其實我家老大找到的這篇,就已經完整說明設計RESTful API各種要注意的地方: http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api 以下是個人簡單的筆記: 透過Http協定來提供服務有以下好處: Http協定已經是一個成熟穩定的傳輸協定,累積了業界的經驗,而且有許多的Http Server支援,不用自己再打造協定,只須選擇一種Http Server來使用,並把應用程式佈署進去。 Client端也有許多現成的Open Source實作,不需自行打造穩定可靠的Client端 協定都是以文字為主,理解與除錯較簡單 至於傳輸內容部份,應用程式相關資料,目前業界都是使用肉眼可讀的JSON,怕字串容量過大,各家http server都有現成的工具可壓縮。 安全部份有https可以使用,加密也不需自行處理,可以使用Open Source的Solution Http本身也支援Cache機制,善加利用對於處理大量讀取需求也會很有幫助。 REST:Representational State Transfer,含狀態傳輸,來自Roy Fielding博士的論文 http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm 是一種軟體架構風格,在目前的Web Service實現方...