传统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 (型号)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。