路径格式:/api版本/模块/控制器/方法/...
php
api版本为最高级别,服务端或者客户端对应版本,若是客户端或者服务端升级版本,则不匹配的api接口被废弃
复制代码
例:(ThinkPHP须要使用路由表,非默认的路由支架)数据库
/v1/admin/user/signin //管理员登陆地址
/v1/admin/user/signup //管理员注册地址
/v1/wechat/user/bind //微信绑定地址
/v1/app/user/mobile_bind //APP端手机号绑定地址
复制代码
//统一返回一个以下对象
object{
status: int,//请求状态码 客户端根据此代码来决策是否继续解析data下面的内容
msg: string,//请求提示信息
exp: long, //请求过时时间
time: long, //数据生成时间
data:[]/{} //该对象装载 实际返回的数据,对象或者数组
}
复制代码
实例一个登录请求返回结果:api
POST /v1/app/user/sign
//登陆成功:
{
"status": 0,
"msg": "登陆成功",
"exp": 0,
"time": 1537106828380,
"data": {
"user": {
"id": 10000,
"username": "jiankian",
"nickname": "绿血贵族",
"avatar": "https://app.anline.cn/uploaad/images/2018/09/15/s_212391239.png",
"gender": "男",
"area": 532324,
"area_decode": "云南省楚雄彝族自治州南华县",
"mobile": "13529513104",
"tel": "0878-66668888",
"age": 23,
"birthday": "1999-11-11"
},
"token": "eyJpc3MiOiJKb2huI.eyJpc3MiOiJ.Kb2huIFd1IEp"
}
}
//登陆失败:
{
"status": -1,
"msg": "登陆失败,用户不存在",
"exp": 0,
"time": 1537106828380,
"data": null
}
复制代码
PHP仅使用 GET
和 POST
方法数组
统一使用Unix 时间戳格式,php时间戳格式长度无毫秒级,精确度*1000
MYSQL数据库存储时间戳为BIGINT类型
复制代码
多图和多文件上传则遍历此请求遍历返回,此接口只接受单文件bash
统一文件/图片/附件上传接口,统一在数据库存储文件签名、路径、大小、类型等信息
复制代码
jws, jwe, jwk, jwa, jwt 使用jwt鉴权、同时生成的token字符串存储在数据库,对于必要的api请求地址,使用AES加密请求参数,防止被抓包窃取接口资源微信
服务端身份验证:app
除了文件上传接口之外的地方,(部分文件上传组件不支持添加headers参数,只能使用拼加GET参数)
所有使用header携带token来鉴权
header字段name:`ANN-Token`
复制代码
标准编码 UTF-8
ui
数据库版本:编码
MySQL: 5.六、5.7 (5.7请容许验证空字段)
复制代码
数据库编码: 考虑客户端emoji标签字符,iOS和Android表情代码,图片存储等加密
Database Encoding: utf8mb4
Database Collation: utf8mb4_unicode_ci复制代码