传统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 (型号)