REST API

2014Q3 工作心得 (3)

專注做好一件事非常重要, API 實作看似簡單,卻有許多細節要注意,目前 App 與後台溝通我們主要採用 RESTful API 為主,剛開始主要透過 Google Drive - Docs 和 Google Chrome Postman Plugin 進行 API 的管理,可是方式最大的問題在於無法更新與同步。

針對無法更新與同步 API 的問題,我們開始尋找解決方案,Mulesoft API Portal 平台就能夠解決更新與同步 API 的問題,同時簡單幾個設定就能創建各個專案專屬的 API 網站,以及權限授權管理,此外搭配 RAML (RESTful API Modeling Language) 描述語言搭配 Mulesoft API Desinger 就能讓整個更新與管理流程更簡化,同時在試用的過程之中 Mulesoft 公司更有不錯的技術服務與諮詢,重點是「免費」使用。

最後我們整合 Mulesoft 的 API 基本解決方案,從開始規劃 API 至建立 API 平台之後,更能透過 Mulesoft Osprey-CLI 套件將 RAML 自動轉換成 Node.js 程式碼進行測試與開發。

2014Q1 工作心得 (2)

我們主要是透過 REST API 的方式,因此在上線之後可能會面臨資訊安全的問題,根據 REST Security Cheat Sheet 的分類主要可以分成五大類分別為驗證身份、授權使用、輸入驗證、輸出編碼和加密處理,因為我們主要是內容為主的 App,因此當我們會請編輯花費許多的時間確保內容品質,提供最高品質的資訊給使用者。

當編輯整理之後的資料非常有價值時,就會發生獨立開發者直接使用我們 API 進行同類型影音 App 的開發成為競爭者,直接對於我們造成直接的影響,我們為了解決此問題主要透過 nginx 的存取記錄,透過指令 cat [nginx log file] | cut -d’ ‘ -f1 | sort | uniq -c | sort -n 追蹤異常大量存取 API 的 IP 位址,嘗試透過 IP 和 User-agent 進行阻擋。

但是發現問題一樣存在,因此我們最後只好在犧牲不打算更新版本的 App 者進行 AES 256 bits 的加密處理,主要是將 Node.js 產生有價值的資訊透過 AES 256 bits 的加密之後再以 API 的方式回傳給 iOS 和 Android 的 App 進行有價值的資訊解密,呈現最完整的內容給使用者。