SpringBoot定义优雅全局统一Restful API 响应框架四

打印 上一主题 下一主题

主题 899|帖子 899|积分 2697

如果没有看前面几篇文章请先看前面几篇
SpringBoot定义优雅全局统一Restful API 响应框架
SpringBoot定义优雅全局统一Restful API 响应框架二
SpringBoot定义优雅全局统一Restful API 响应框架三
目前我们好像似乎解决所有问题,达到了我们理想的效果如下

但是在业务错误返回时候不太理想如下

没有必要返回 reuqest和errorMsg
还有如果业务非常复杂的时候,会不会出现错误码分配使用混乱和重复问题这个问题应该如何避免和解决呢?
这个时候我想到 使用业务错误常量来代替错误码,这样更加见字识意, 进一步抽象错误常量公共接口模块
  1. package cn.soboys.springbootrestfulapi.common.error;
  2. import java.util.List;
  3. /**
  4. * @author 公众号 程序员三时
  5. * @version 1.0
  6. * @date 2023/5/9 20:14
  7. * @webSite https://github.com/coder-amiao
  8. * 定义错误常量 代替错误码,避免业务复杂错误码分配重复等问题
  9. */
  10. public interface CommonErrorConstant {
  11.     /**
  12.      * 公共错误码定义
  13.      */
  14.     public static final String InvalidRequest = "InvalidRequest";
  15.     public static final String InvalidArgument = "InvalidArgument";
  16.     public static final String NotFound = "NotFound";
  17.     public static final String UnknownError = "UnknownError";
  18.     public static final String OK = "OK";
  19.     public static final String FAIL = "FAIL";
  20.     /**
  21.      * 其他自定义业务错误码
  22.      */
  23. }
复制代码
通用错误码
  1. package cn.soboys.springbootrestfulapi.common.error;
  2. import cn.soboys.springbootrestfulapi.common.resp.ResultCode;
  3. /**
  4. * @author 公众号 程序员三时
  5. * @version 1.0
  6. * @date 2023/5/2 21:36
  7. * @webSite https://github.com/coder-amiao
  8. */
  9. public enum CommonErrorCode implements ResultCode {
  10.     /**
  11.      * 错误请求
  12.      */
  13.     INVALID_REQUEST(false, CommonErrorConstant.InvalidRequest, "Invalid request, for reason: "),
  14.     /**
  15.      * 参数验证错误
  16.      */
  17.     INVALID_ARGUMENT(false, CommonErrorConstant.InvalidArgument, "Validation failed for argument "),
  18.     /**
  19.      * 未找到资源
  20.      */
  21.     NOT_FOUND(false, CommonErrorConstant.NotFound, "Resource  not found."),
  22.     /**
  23.      * 未知错误
  24.      */
  25.     UNKNOWN_ERROR(false, CommonErrorConstant.UnknownError, "Unknown server internal error.");
  26.     CommonErrorCode(Boolean success, String code, String message) {
  27.         this.success = success;
  28.         this.code = code;
  29.         this.message = message;
  30.     }
  31.     /**
  32.      * 响应是否成功
  33.      */
  34.     private Boolean success;
  35.     /**
  36.      * 响应状态码
  37.      */
  38.     private String code;
  39.     /**
  40.      * 响应信息
  41.      */
  42.     private String message;
  43.     @Override
  44.     public String getCode() {
  45.         return code;
  46.     }
  47.     @Override
  48.     public String getMessage() {
  49.         return message;
  50.     }
  51.     @Override
  52.     public boolean getSuccess() {
  53.         return success;
  54.     }
  55. }
复制代码
正常请求

错误请求

  • 调整后的业务异常

  • 调整未知错误异常

对应代码已经上传更新github

在留一下一个思考问题,如果接口错误需要国际化应该如何实现?
如果你觉得对您有帮助关注公众号,程序员三时 我会给大家不定期分享热门技术,做开源项目,技术交流,面试,学习,分享自己入行多年一些感受和经验

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宝塔山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表