傳統API
android
獲取用戶信息 get /api/user/read 更新用戶信息 post /api/user/update 新增用戶信息 post /api/user/add 刪除用戶信息 post /api/user/delete
Restful API
ios
獲取用戶信息 get /api/user/1 更新用戶信息 put /api/user/1 新增用戶信息 post /api/user 刪除用戶信息 delete /api/user/1
區別
json
相同:數據通常以json或xml格式返回 不一樣: Restful API:操做的是資源;增刪改查對應http動詞 傳統API : 只有get/post動詞;
注意:API接口返回的
JSON數據
中包含的是業務狀態碼
,並不是HTTP狀態碼api
2XX系列
安全
200 請求成功(做用於GET方式) 201 建立成功(做用於POST方式) 204 更新/刪除成功(做用於PUT/Delete方式)
4XX系列
服務器
400 無效請求(參數錯誤或不合法) 401 缺乏用戶認證參數,好比說,請求的時候沒有帶上 Token 等。 403 沒有權限 404 請求資源不存在 405 請求方法(get/post/put/delete)不容許使用
5XX系列
數據結構
500 服務器內部錯誤(泛用,無需區分具體錯誤) 501 功能沒有實現
返回的JSON數據結構
必須由團隊統一約定,通常必須包含3項:業務狀態碼、消息、數據app
//API 返回數據結構以下 { "status": 0, "msg": "OK", "result": [] }
封裝一個方法:
格式化通用API接口數據結構
工具
function formatDataByJson($status, $msg, $data=[], $httpCode=200){ $result = [ 'status' => $status, 'msg' => $msg, 'data' => $data ]; return json($result, $httpCode); }
黑客一般有2種手法獲取數據:
一、抓包
二、反編譯post
一、請求地址、頭部參數、體部數據暴露(利用加密、有效時間、惟一性解決) 二、返回數據明文暴露(可經過加密解決) 三、擔憂反編譯(使用防反編譯工具打包) 四、XSS腳本跨站攻擊
由客戶端生成
Token
客戶端工程師和服務器端工程師約定好規則,客戶端工程師把約定好規則的加密Token傳給服務器端,服務器端再按照約定好規則解密就好。
由服務端生成
Token
在請求任何API接口以前,都必須先請求一個獲取服務器生成的Token的API接口,獲取Token以後,才請求其餘API接口
Token是
請求時間+型號+設備號+系統類型
加密(aes加密)
一、token(加密校驗參數)必須填 二、content-type (application/json) 必須填 ---------------------如下爲選填,無關緊要,任由開發者本身定義 三、app-type (app類型:android/ios/pc) 四、did (設備號) 五、version (版本) 六、model (型號)