在前后台分离开发过程中,统一响应的格式可以使用枚举类型进行规范开发,对于不同的错误/异常类型可以响应不同的状态码和响应信息。
1,枚举类型的简单理解:枚举类型就是包含了有限个枚举对象集合的类,而枚举对象就是集合中其中一个,可以使用枚举类名直接调用。
需要注意的是:
1)枚举类型不能被继承或者实现
2)枚举类型的构造方法是私有方法,因为枚举类型的对象已经在类中列举了,且是有限了,不能创建对象
2,枚举类型响应码举例:
import lombok.ToString; @ToString public enum CommonCode implements ResultCode { SUCCESS(true, 10000, "操作成功!"), FAIL(false, 11111, "操作失败!"), UNAUTHENTICATED(false, 10001, "此操作需要登陆系统!"), UNAUTHORISE(false, 10002, "权限不足,无权操作!"), SERVER_ERROR(false, 99999, "抱歉,系统繁忙,请稍后重试!"), INVALID_PARAM(false,10003,"非法参数!"); // private static ImmutableMap<Integer, CommonCode> codes ; //操作是否成功 boolean success; //操作代码 int code; //提示信息 String message; private CommonCode(boolean success, int code, String message) { this.success = success; this.code = code; this.message = message; } @Override public boolean success() { return success; } @Override public int code() { return code; } @Override public String message() { return message; } }
package com.xuecheng.framework.model.response; /** * Created by mrt on 2018/3/5. * 10000-- 通用错误代码 * 22000-- 媒资错误代码 * 23000-- 用户中心错误代码 * 24000-- cms错误代码 * 25000-- 文件系统 */public interface ResultCode { //操作是否成功,true为成功,false操作失败 boolean success(); //操作代码 int code(); //提示信息 String message(); }
ResultCode 中定义了响应的基本信息,包含:是否成功,响应码,响应信息,在多模块开发中可以起到规范的作用。
CommonCode 为各个模块通用的响应码,包含了通用的异常信息,也可以为每一个模块定义自定义的响应码,继承 ResultCode 即可。 使用枚举类型定义响应实现定义:
@Data@ToString@NoArgsConstructorpublic class ResponseResult implements Response { //操作是否成功 boolean success = SUCCESS; //操作代码 int code = SUCCESS_CODE; //提示信息 String message; public ResponseResult(ResultCode resultCode){ this.success = resultCode.success(); this.code = resultCode.code(); this.message = resultCode.message(); }}
public interface Response { // 定义常量 public static final boolean SUCCESS = true; public static final int SUCCESS_CODE = 10000;}
使用举例(不需要响应实体对象):
new ResponseResult(CommonCode.FAIL);
对于需要同时返回实体对象和响应码的,可以继承 ResponseResult 并添加实体类到属性即可
@Data public class PageResult extends ResponseResult { Page page; public PageResult(ResultCode resultCode,Page page) { super(resultCode); this.Page = page; } }
使用举例(需要响应实现对象):
new ResponseResult(CommonCode.FAIL,new Page());
原文地址:https://www.cnblogs.com/lishaojun/p/11074948.html
时间: 2024-11-09 13:58:37