分享–前后端分离的公共返回结果

在做前后端分离的时候,很多小伙伴不知道该怎么返回一个处理结果给前端。我这里给大家分享一套简单实用的模板
自定义处理结果的接口

/**
 * 自定义处理结果
 */
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);
    }

大功告成~!!!

如有侵权,请联系我~~~

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值