編寫API應該考慮那些問題
安全機制的設計:動態token、https、對稱加密與非對稱加密
接口數據的設計:良好的相應速度、跨平臺性
接口版本的設計:良好的說明文檔、測試程序、接口數據、狀態
接口框架 :slim rap文檔
優化接口:restful風格
接口版本的切換(迭代設計)
公共接口的安全設計
1、考慮接口的跨平臺性
編寫的接口要支持Android/iOS ,採用通用的解決方案,通信協議就採用最常用的HTTP協議,如果是即時通信,可以採用開放的XMPP協議,做遊戲的可以採用可靠的TCP協議。
2、良好的響應速度
接口應該以最快的速度將數據返回給請求者,數據量按需分配,APP客戶端需要什麼數據就返回什麼數據。
3、安全問題
解決安全問題主要是保證API的調用者是經過自己授權的App;
保證數據傳輸的安全。
第一個問題我是採用了動態TOKen的方法,登陸時產生一個token,存入到memcache緩存中,登陸成功後將這個token返回給客戶端,下次用戶請求時攜帶新生成的token等一系列參數到服務器端,在服務器端取出memcache中的token,根據前後端約定的規則生成新的token,然後將這兩個token進行對比,如果相同則證明是授權的APP。
第二個問題的解決方案,主要就是採用 HTTPS了。HTTPS因爲添加了SSL安全協議,自動對請求數據進行了壓縮加密,在一定程序可以防止監聽、防止劫持、防止重發,主要就是防止中間人攻 擊。因此,爲了安全考慮,建議對SSL證書進行強校驗,包括簽名CA是否合法、域名是否匹配、是不是自簽名證書、證書是否過期等。
接口的安全工作不能馬虎,暴力破解啊、SQL Injection啊、僞造請求和數據啊、重複提交啊也要考慮到。
4、良好的接口說明文檔和測試程序
接口文檔要清晰、明瞭,包含多少個接口,每個接口的地址、參數、請求方式、數據交換格式、參數是否必填、編碼格式UTF8,返回值等都要寫清楚。
5、接口數據、狀態
接口必須提供明確的數據狀態信息,不管是成功的,還是失敗的,都必須返回給APP客戶端。
6、接口、參數命名準確。
無論是接口還是參數,命名都應該有意義,讓人一目瞭然。接口調試技巧前提必須放在外網上
1)服務端return 調試信息,客戶端調用並顯示結果,
2)在服務端將結果保存成文件在打開文件查看,即日誌型調試(或建臨時表放在數據庫表裏)
考慮突然斷網或接口信息返回超時異常情況的業務處理(先扣金額更新狀態,如有問題自動返回)
7、restful風格
一句話就是:面向資源
使用簡單的url和http請求接口來實現接口
用標準的http協議來完成邏輯操作
更安全、簡潔
在REST規則中,有兩個基礎概念:對象、行爲
對象就是我們要操作的對象,例如添加用戶的操作,那麼對象就是user
行爲有4種常用的:查看、創建、編輯、刪除
rest的提出者很巧妙的利用http現有方法來對應這4種行爲:
GET - 查看
POST - 創建
PUT - 編輯
DELETE - 刪除
http://www.cnblogs.com/jifeng/p/5138887.html
8、接口版本的切換
把原來的接口copy一份,然後進行開發,建一個版本的表,前端請求過來的時候攜帶一個版本號的參數
9、公共接口安全的設計
可以通過檢測指定機器ip請求頻率就可以解決,如果發現某個ip請求頻率很高,可以給它彈出一個驗證碼或者直接禁止它的請求。