美文网首页
Java设计RestCodeEnum枚举,实现接口统一格式返回

Java设计RestCodeEnum枚举,实现接口统一格式返回

作者: 王疏蔬 | 来源:发表于2020-12-25 15:35 被阅读0次

    1.接口返回值枚举定义

        /**
         *接口返回枚举定义
         */
        public enum RestCodeEnum {
        SUCCESS("200", "处理成功"),
        ERROR("500", "系统异常");
    
        private String code;
        private String msg;
    
        RestCodeEnum(String code, String msg) {
            this.code = code;
            this.msg = msg;
        }
    
        public String getCode() {
            return code;
        }
    
        public String getMsg() {
            return msg;
        }
     }
    

    2.异常信息抛出返回值定义

    public class RestException extends RuntimeException {
        private static final long serialVersionUID = -649224303322031383L;
    
        private RestCodeEnum retCode;
    
        public RestException() {
            super();
        }
    
        public RestException(RestCodeEnum retCode) {
            super(retCode.getMsg());
            this.retCode = retCode;
        }
    
        public RestException(RestCodeEnum retCode, String msg) {
            super(msg);
            this.retCode = retCode;
        }
    
        public RestCodeEnum getRetCode() {
            return this.retCode;
        }
    
        public void setRetCode(RestCodeEnum retCode) {
            this.retCode = retCode;
        }
    }
    

    3.接口统一返回参数定义

    @Slf4j
    public abstract class BaseController {
        public static final String CODE = "code";
        public static final String MSG = "msg";
        public static final String DATA = "data";
    
        protected static String success() {
            final Map<String, Object> result = Maps.newHashMap();
            result.put(CODE, RestCodeEnum.SUCCESS.getCode());
            result.put(MSG, RestCodeEnum.SUCCESS.getMsg());
            return JSON.toJSONString(result);
        }
    
        protected static String success(Object data) {
            final Map<String, Object> result = Maps.newHashMap();
            result.put(CODE, RestCodeEnum.SUCCESS.getCode());
            result.put(MSG, RestCodeEnum.SUCCESS.getMsg());
            result.put(DATA, data);
            return JSON.toJSONString(result);
        }
    
        protected static String error(RestCodeEnum code) {
            final Map<String, Object> result = Maps.newHashMap();
            result.put(CODE, code.getCode());
            result.put(MSG, code.getMsg());
            return JSON.toJSONString(result);
        }
    
        protected static String error(RestCodeEnum code, String msg) {
            final Map<String, Object> result = Maps.newHashMap();
            result.put(CODE, code.getCode());
            result.put(MSG, msg);
            return JSON.toJSONString(result);
        }
    }
    

    4.增加全局异常

    /**
     * 全局异常处理器
     */
    @RestControllerAdvice
    @Slf4j
    public class GlobalExceptionHandler extends BaseController {
        /**
         * 基础异常
         */
        @ExceptionHandler(RestException.class)
        public String baseException(RestException e) {
            return error(e.getRetCode(), e.getMessage());
        }
    }
    

    5.实例

    /**
     * 直接使用error、success 需要继承 BaseController
     */
    @RestController
    @RequestMapping("/dataProcessing")
    public class DataProcessingController extends BaseController {
    
        @Resource
        private JdbcTemplate jdbcTemplate;
    
        @PostMapping("/deleteSource")
        public String deleteSource(@RequestBody JSONObject body) {
            String sqlCode = body.getString("sqlCode");
            if (StringUtils.isBlank(sqlCode)) {
                throw new RestException(RestCodeEnum.ERROR);//异常信息直接抛出
            }
            if (jdbcTemplate.update("UPDATE `data_sql` SET `status` = '0' where `sql_code` = '" + sqlCode + "';") > 0) {
                return success();//成功信息返回
            }
            return error(RestCodeEnum.ERROR);//错误信息返回
        }
    }
    

    相关文章

      网友评论

          本文标题:Java设计RestCodeEnum枚举,实现接口统一格式返回

          本文链接:https://www.haomeiwen.com/subject/qixinktx.html