先看结果
@PostMapping("/advancedGeneral")
public Result advancedGeneral(@RequestBody ImgUrl url){
List<AdvancedGeneralPo> advanceGeneral = baiDuApiService.getAdvanceGeneral(url.url);
return Result.success(advanceGeneral);
}
这是一个post请求接口,返回结果为Result:
{
"code": 200,
"message": "成功",
"status": true,
"data": [
{
"score": 0.922301,
"root": "商品-眼镜",
"keyword": "眼镜"
},
{
"score": 0.564299,
"root": "商品-数码产品",
"keyword": "台式电脑"
},
{
"score": 0.377317,
"root": "病理图-器官病理图",
"keyword": "眼睛"
},
{
"score": 0.188618,
"root": "商品-电脑办公",
"keyword": "笔记本电脑"
},
{
"score": 0.001155,
"root": "商品-原材料",
"keyword": "铁线"
}
]
}
- code:状态码,
- message:返回信息
- status:请求状态
- data:返回数据(自行添加)
先定义一个类:
public interface IResultCode {
/**
* 获取状态码
*
* @return 状态码
*/
Integer getCode();
/**
* 获取返回消息
*
* @return 返回消息
*/
String getMessage();
}
枚举:
@Getter
public enum ResultCode implements IResultCode {
/**
* 成功
*/
OK(200, "成功"),
/**
* 失败
*/
ERROR(500, "失败"),
SYSTEM_ERROR(501, "系统错误"),
UNKNOWN_ERROR(502, "未知错误"),
/* 参数错误:1000~1999 */
PARAM_NOT_VALID(1001, "参数无效"),
PARAM_IS_BLANK(1002, "参数为空"),
PARAM_TYPE_ERROR(1003, "参数类型错误"),
PARAM_NOT_COMPLETE(1004, "参数缺失"),
PARAM_TYPE_REPEAT(1005,"参数重复"),
/* 用户错误 */
USER_NOT_LOGIN(2001, "用户未登录"),
USER_ACCOUNT_EXPIRED(2002, "账号已过期"),
USER_CREDENTIALS_ERROR(2003, "密码错误"),
USER_CREDENTIALS_EXPIRED(2004, "密码过期"),
USER_ACCOUNT_DISABLE(2005, "账号不可用"),
USER_ACCOUNT_LOCKED(2006, "账号被锁定"),
USER_ACCOUNT_NOT_EXIST(2007, "账号不存在"),
USER_ACCOUNT_NOT_NULL(2013, "账号不能为空"),
USER_CREDENTIALS_NOT_NULL(2014, "密码不能为空"),
USER_ACCOUNT_ALREADY_EXIST(2008, "账号已存在"),
USER_ACCOUNT_USE_BY_OTHERS(2009, "账号下线"),
PASSWORD_SAME(2010, "新密码与原密码一致"),
ACCOUNT_OR_PASSWORD_NOT_NULL(2016, "账号或者密码不能为空"),
/* token错误 */
TOKEN_IS_NULL(2011, "token不能为空"),
TOKEN_INVALID(2012, "token失效"),
TOKEN_ERROR(2015, "token错误"),
/* 业务错误 */
NO_PERMISSION(3001, "没有权限"),
ADD_FAIL(3002, "新增失败"),
UPDATE_FAIL(3003, "更新失败"),
DELETE_FAIL(3004, "删除失败"),
QUERY_FAIL(3005, "查询失败"),
QUERY_EMPTY(3006, "查询为空"),
QUERY_NOT_EXIST(3007, "查询不存在"),
EMAIL_ERROR(2060, "邮箱格式错误"),
PHONE_ERROR(2061, "电话格式错误"),
EMAIL_REPEAT_ERROR(2062, "邮箱已存在"),
/* 文件读写 */
FILE_IS_NULL(2041, "文件为空"),
FILE_WRONG_FORMAT(2042, "文件格式错误"),
FILE_CHUNK_UPLOAD_ERROR(2043, "文件分块上传失败!"),
FILE_CHUNK_MERGE_ERROR(2044, "文件分块合并失败"),
FILE_CONTENT_ERROR(2045, "上传文件内容错误"),
/** 数据导出 */
EXPORT_FAILURE(2100, "导出失败"),
/** 数据导入 */
IMPORT_FAILURE(2101,"导入失败");
/**
* 返回码
*/
private Integer code;
/**
* 返回消息
*/
private String message;
ResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
}
Result工具类:
@Data
public class Result<T> {
/** 状态码 */
private Integer code;
/** 返回消息 */
private String message;
/** 状态 */
private boolean status;
/** 返回数据 */
private T data;
public Result(Integer code, String message, boolean status, T data) {
this.code = code;
this.message = message;
this.status = status;
this.data = data;
}
public Result(ResultCode resultCode, boolean status, T data) {
this.code = resultCode.getCode();
this.message = resultCode.getMessage();
this.status = status;
this.data = data;
}
public Result(ResultCode resultCode, boolean status) {
this.code = resultCode.getCode();
this.message = resultCode.getMessage();
this.status = status;
this.data = null;
}
public static <T> Result success() {
return new Result<>(ResultCode.OK, true);
}
public static <T> Result message(String message) {
return new Result<>(ResultCode.OK.getCode(), message, true, null);
}
public static <T> Result success(T data) {
return new Result<>(ResultCode.OK, true, data);
}
public static <T> Result fail() {
return new Result<>(ResultCode.ERROR, false);
}
public static <T> Result fail(ResultCode resultCode) {
return new Result<>(resultCode, false);
}
public static <T> Result fail(Integer code, String message) {
return new Result<>(code, message, false, null);
}
public static <T> Result fail(ResultCode resultCode, T data) {
return new Result<>(resultCode, false, data);
}
public static <T> Result fail(Integer code, String message, T data) {
return new Result<>(code, message, false, data);
}
}
这样,就封装好统一的返回信息处理了。