接口返回值格式约定
1.接口返回值格式示例
{
"code":int,
"msg":"String",
"data":int || String || {} || [] //data里的数据是个java对象
}
全局返回码示例
- 0 请求成功
- 1 权限不足
- 2 正常失败
- 3 未登录
- 4 token过期
- 5 无效token
- 6 缺少token参数
- 7 验证码不正确
- 500 服务器内部错误
- 客户端直接提示返回值中的msg即可,后端需要在返回值的msg中写明失败原因
- 特殊情况在定义新的code码
代码示例
1:处理code示例
if (code== 成功返回码) {
//进行成功操作
} else if (code== 未登录或者登录过期返回码){
//提示用户message中的信息,进行未登录操作
} else {
//直接提示用户message中的信息,或根据详细code并做相应操作
}
2、分页返回示例
params: {
"pageNum": 1,// 页码
"pageSize": 20, //每页大小
}
response:
{
"code":成功返回码,
"msg":"请求成功",
"data":{
"pageNum":1, //当前页码
"pageSize":20, //每页显示记录数大小
"size":4, //当前页记录数量
"orderBy":null,
"startRow":1, //开始行数
"endRow":4, //结束行数
"total":4, //数据总记录数
"pages":1, //总页数
"list":[{...},{...},{...}], //当前页数据
"firstPage":1, //第一页页码
"prePage":0, //上一页页码
"nextPage":0,//下一页页码
"lastPage":1, //最后一页页码
"isFirstPage":true, //是否是第一页
"isLastPage":true, //是否是最有一页
"hasPreviousPage":false, //是否有上一页
"hasNextPage":false, //是否有下一页
"navigatePages":8, //导航页码数
"navigatepageNums":[1] // //所有导航页号
}
}
3、单个对象返回示例
params: {
"code":"021ZLZY32oEkpN0IJRX32n88Z32ZLZYc"
"url": "www.baidu.com"
}
response:
{
"code":成功返回码,
"msg":"请求成功",
"data":{
"timeStamp":"1530690245",
"signature":"eb3f4b99de2ac50c5921766fd268001992a8b09c",
"nonceStr":"08dbcdf0-70c7-4809-b517-d52a33155705"
}
}
4、单个属性返回示例
params: {
"phone":"111"
"password": "11"
}
response:
{
"code":成功返回码,
"msg":"请求成功",
"data":"gjfkdddddddddddddddddjk"
}
5、同时返回多个对象示例(map)
params: {
"phone":"111"
"password": "11"
}
response:
{
"code":成功返回码,
"msg":"请求成功",
"data":{
"card": {
"id":111
},
"userInfo":{
"name":"张三"
}
}
}
6、数组返回示例(list)
params: {
"type":"111"
}
response:
{
"code":成功返回码,
"msg":"请求成功",
"data":[{
"status":0,
"statusName": "在线"
},{
"status":1,
"statusName": "离线"
}]
}
6:含有时间的数据返回
时间数据需要给客户端返回是时间戳,不需要后台格式化(可以考虑数据库存储的也是时间戳)
7:异常处理机制
每个项目必须加上全局异常捕捉,并按照上文约定格式返回状态码为500的结果,避免将异常和错误直接展示在页面。