在做前后端分离的时候,很多小伙伴不知道该怎么返回一个处理结果给前端。我这里给大家分享一套简单实用的模板
自定义处理结果的接口
/**
* 自定义处理结果
*/
public interface CustomizeResultCode {
/**
* 获取错误状态码
* @return
*/
Integer getCode();
/**
* 获取错误信息
* @return
*/
String getMessage();
}
返回的状态信息(根据自己需求自定义,我这里只是一个模板)
public enum ResultCode implements CustomizeResultCode{
/* 成功 */
SUCCESS(200, "成功!~~"),
/* 默认失败 */
COMMON_FAIL(-1, "失败!~~"),
//用户相关:1000**
USER_ACCOUNT_NOT_FOUND(10001, "账号不存在!~~"),
USER_PASSWORD_ERROR(10002, "密码错误!~~"),
AUTHENTICATION_EXCEPTION(10003, "身份验证失败!~~"),
PHONE_VERIFICATION_CODE_NOT_FOUND(10004, "手机验证码错误!~~"),
NON_ADMINISTRATOR_ACCOUNT(10005, "非'管理员'账户,无法登入!~~"),
NON_ACTIVATED_ACCOUNT(10006, "该账户未激活,无法登入!~~"),
USER_LOSE_EFFICACY(10006, "验证码已失效!~~"),
USER_WRITE_CODE_ERROR(10007, "验证码输入有误!~~"),
/*权限*/
PERMISSION_UNAUTHORIZED_EXCEPTION(20001,"没有权限,无法操作!~~"),
/*token方面*/
TOKEN_INVALID_EXCEPTION(40001,"Token无效,您无权访问该接口"),
/*运行时异常*/
ARITHMETIC_EXCEPTION(90001,"算数异常!~~"),
NULL_POINTER_EXCEPTION(90002,"空指针异常!~~"),
/*未知登录类型传参错误*/
UNKNOWN_LOGIN_TYPE_EXCEPTION(20001,"未知登录类型异常!~~"),
LOGIN_OTHER_EXCEPTION(20002,"登录其他异常!~~"),
LOGIN_NOT_MANAGER_LOGIN(20003,"该用户没有进入后台管理的权限"),
PHONE_LOGIN_CODE_ERROR(20004, "登录验证码错误!~~"),
/**/
INSERT_LOG_ERROR(80001, "日志插入异常!~~"),
;
private Integer code;
private String message;
ResultCode(Integer code, String message){
this.code = code;
this.message = message;
}
@Override
public Integer getCode() {
return code;
}
@Override
public String getMessage() {
return message;
}
}
返回给前端的结果
/**
* 公共返回结果
*/
@Data
public class Result {
@ApiModelProperty(value = "是否成功")
private Boolean success;
@ApiModelProperty(value = "返回码")
private Integer code;
@ApiModelProperty(value = "返回消息")
private String message;
@ApiModelProperty(value = "返回数据")
private Map<String,Object> data = new HashMap<>();
/**
* 构造方法私有化,里面的方法都是静态方法
* 达到保护属性的作用
*/
private Result(){}
/**
* 这里是使用链式编程
*/
public static Result ok(){
Result result = new Result();
result.setSuccess(true);
result.setCode(ResultCode.SUCCESS.getCode());
result.setMessage(ResultCode.SUCCESS.getMessage());
return result;
}
public static Result error(){
Result result = new Result();
result.setSuccess(false);
result.setCode(ResultCode.COMMON_FAIL.getCode());
result.setMessage(ResultCode.COMMON_FAIL.getMessage());
return result;
}
public static Result error(CustomizeResultCode customizeResultCode){
Result result = new Result();
result.setSuccess(false);
result.setCode(customizeResultCode.getCode());
result.setMessage(customizeResultCode.getMessage());
return result;
}
/**
* 自定义返回成功与否
* @param success
* @return
*/
public Result success(Boolean success){
this.setSuccess(success);
return this;
}
public Result message(String message){
this.setMessage(message);
return this;
}
public Result code(Integer code){
this.setCode(code);
return this;
}
public Result data(String key,Object value){
this.data.put(key,value);
return this;
}
public Result data(Map<String,Object> map){
this.setData(map);
return this;
}
}
使用示例
@GetMapping("/test2")
public Result test2(){
System.out.println("测试1~~ ");
return Result.ok().message("ok");
}
/**------或者这样------*/
@GetMapping("/findCount")
public Result findCount(){
List<Count> list = classService.list();
System.out.println("list: " + list);
return Result.ok().data("list",list);
}
大功告成~!!!
如有侵权,请联系我~~~