目标
开发前后端分离的系统时,“前端应用”调用“后台接口”获取数据。
需要一套统一数据包装体和状态码,供“前端应用”按统一的格式规范来获取响应数据,并通过状态码知道异常类型并做出动作。例如401状态码表示未登录,“前端应用”应打开登录页面。
客户端种类
- PC Web网站 (由于是服务端模块服务端路由,不需要使用统一数据包装体和状态码)
- wap网站、微信商城 (由于前后端分离,所以适用 统一数据包装体和状态码 )
- App(是uni-app开发的app、小程序、h5) (由于前后端分离,所以适用 统一数据包装体和状态码 )
统一数据包装体
1.服务端返回的数据是json格式的,数据格式如下:
{ "status":"200", //状态码 "message":"查询成功",//文字提示信息 "data":{}, //接口返回的业务数据 "page":{} //接口返回的分页数据 }
2. 数据格式说明:
参数键 | 说明 | java数据类型 | js数据类型 |
---|---|---|---|
status | 状态码 | String | 字符串 |
message | 文字提示信息 | String | 字符串 |
data | 业务数据 | json对象 | |
page. pageNo | 分页数据- 页码 | new Page() | json对象 |
page. pageSize | 分页数据- 每页记录数 | new Page() | json对象 |
page. pageCount | 分页数据- 总记录数 | new Page() | json对象 |
状态码
状态码值 | 说明 |
---|---|
200 | 服务器成功返回用户请求的数据 |
400 |
用户发出的请求有错误,具体错误信息在msg中,服务器没有进行新建或修改数据的操作 访问登录接口时失败,可能是 用户不存在或 密码不正确 |
401 |
访问业务接口时未登录,返回401,告知客户端去登录 |
403 | 无访问 权限 |
404 | 用户发出的请求针对的是不存在的记录,服务器没有进行操作 |
406 | 用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式) |
500 | 服务器发生错误,用户将无法判断发出的请求是否成功 |
AppDataUtils工具类
com.sicheng.wap.utils.AppDataUtils 是统一数据包装体和状态码的工具类。
工具类名 | 方法名 | 说明 |
---|---|---|
AppDataUtils | 常量 |
public static final String STATUS_OK = "200" ; //服务器成功返回用户请求的数据 public static final String STATUS_UNAUTHORIZED = "401" ; //未登录 public static final String STATUS_INVALID = "400" ; //用户发出的请求有错误,服务器没有进行新建或修改数据的操作 public static final String STATUS_FORBIDDEN = "403" ; //无权限 public static final String STATUS_NOT_FOUND = "404" ; //用户发出的请求针对的是不存在的记录,服务器没有进行操作 public static final String STATUS_NOT_ACCEPTABLE = "406" ; //用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式) public static final String STATUS_SERVER_ERROR = "500" ; //服务器发生错误,用户将无法判断发出的请求是否成功 public static final Integer LIMIT_DEFAULT = 10; //list长度常量 public static final String PAGE_NO_KEY = "pageNo" ; //页码 public static final String PAGE_SIZE_KEY = "pageSize" ; //每页记录数 public static final String PAGE_COUNT_KEY = "pageCount" ; //总记录数 |
AppDataUtils |
getMap |
按《统一数据包装体和状态码》的要求封装数据包装体,封装于map当中 |
AppDataUtils |
getJson |
按《统一数据包装体和状态码》的要求封装数据包装体,封装成JSON |