数据接口(API)开发须知

传统API与RESTful API

传统API

获取用户信息  get   /api/user/read
更新用户信息  post  /api/user/update
新增用户信息  post  /api/user/add
删除用户信息  post  /api/user/delete

Restful API

获取用户信息  get     /api/user/1
更新用户信息  put     /api/user/1
新增用户信息  post    /api/user
删除用户信息  delete  /api/user/1

区别

相同:数据一般以json或xml格式返回
不同:
Restful API:操作的是资源;增删改查对应http动词
传统API :   只有get/post动词;

HTTP状态码

注意:API接口返回的 JSON数据 中包含的是业务状态码,并非HTTP状态码


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项:业务状态码、消息、数据

//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种手法获取数据:
1、抓包
2、反编译

1、请求地址、头部参数、体部数据暴露(利用加密、有效时间、唯一性解决)
2、返回数据明文暴露(可通过加密解决)
3、担心反编译(使用防反编译工具打包)
4、XSS脚本跨站攻击
  • 根据安全问题,有2种生成Token方式

由客户端生成Token

客户端工程师和服务器端工程师约定好规则,客户端工程师把约定好规则的加密Token传给服务器端,服务器端再按照约定好规则解密就好。

由服务端生成Token

在请求任何API接口之前,都必须先请求一个获取服务器生成的Token的API接口,获取Token之后,才请求其他API接口

Token是 请求时间+型号+设备号+系统类型 加密(aes加密)

  • HTTP头部存储基本参数
1、token(加密校验参数)必须填
2、content-type (application/json) 必须填
---------------------以下为选填,可有可无,任由开发者自己定义
3、app-type (app类型:android/ios/pc)
4、did  (设备号)
5、version  (版本)
6、model  (型号)

你可能感兴趣的:(php)