经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring Boot » 查看文章
SpringBoot定义优雅全局统一Restful API 响应框架四
来源:cnblogs  作者:程序员三时  时间:2023/5/10 12:13:11  对本文有异议

如果没有看前面几篇文章请先看前面几篇

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

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

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

目前我们好像似乎解决所有问题,达到了我们理想的效果如下

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

没有必要返回 reuqesterrorMsg

还有如果业务非常复杂的时候,会不会出现错误码分配使用混乱和重复问题这个问题应该如何避免和解决呢?

这个时候我想到 使用业务错误常量来代替错误码,这样更加见字识意, 进一步抽象错误常量公共接口模块

  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. }

正常请求

错误请求

  1. 调整后的业务异常

  2. 调整未知错误异常

对应代码已经上传更新github

在留一下一个思考问题,如果接口错误需要国际化应该如何实现?

如果你觉得对您有帮助关注公众号,程序员三时 我会给大家不定期分享热门技术,做开源项目,技术交流,面试,学习,分享自己入行多年一些感受和经验

原文链接:https://www.cnblogs.com/kenx/p/17387625.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号