數據接口(API)開發須知

傳統API與RESTful API

傳統APIandroid

獲取用戶信息  get   /api/user/read
更新用戶信息  post  /api/user/update
新增用戶信息  post  /api/user/add
刪除用戶信息  post  /api/user/delete

Restful APIios

獲取用戶信息  get     /api/user/1
更新用戶信息  put     /api/user/1
新增用戶信息  post    /api/user
刪除用戶信息  delete  /api/user/1

區別json

相同:數據通常以json或xml格式返回
不一樣:
Restful API:操做的是資源;增刪改查對應http動詞
傳統API :   只有get/post動詞;

HTTP狀態碼

注意: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 功能沒有實現

API數據結構

返回的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);
}

API異常處理

API數據安全

  • 安全問題

黑客一般有2種手法獲取數據:
一、抓包
二、反編譯post

一、請求地址、頭部參數、體部數據暴露(利用加密、有效時間、惟一性解決)
二、返回數據明文暴露(可經過加密解決)
三、擔憂反編譯(使用防反編譯工具打包)
四、XSS腳本跨站攻擊
  • 根據安全問題,有2種生成Token方式

由客戶端生成Token

客戶端工程師和服務器端工程師約定好規則,客戶端工程師把約定好規則的加密Token傳給服務器端,服務器端再按照約定好規則解密就好。

由服務端生成Token

在請求任何API接口以前,都必須先請求一個獲取服務器生成的Token的API接口,獲取Token以後,才請求其餘API接口

Token是 請求時間+型號+設備號+系統類型 加密(aes加密)

  • HTTP頭部存儲基本參數
一、token(加密校驗參數)必須填
二、content-type (application/json) 必須填
---------------------如下爲選填,無關緊要,任由開發者本身定義
三、app-type (app類型:android/ios/pc)
四、did  (設備號)
五、version  (版本)
六、model  (型號)
相關文章
相關標籤/搜索