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

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

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

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

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

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

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

没有必要返回 reuqesterrorMsg

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

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

1package cn.soboys.springbootrestfulapi.common.error; 2 3import java.util.List; 4 5/** 6 * @author 公众号 程序员三时 7 * @version 1.0 8 * @date 2023/5/9 20:14 9 * @webSite https://github.com/coder-amiao 10 * 定义错误常量 代替错误码,避免业务复杂错误码分配重复等问题 11 */ 12public interface CommonErrorConstant { 13 /** 14 * 公共错误码定义 15 */ 16 public static final String InvalidRequest = "InvalidRequest"; 17 public static final String InvalidArgument = "InvalidArgument"; 18 public static final String NotFound = "NotFound"; 19 public static final String UnknownError = "UnknownError"; 20 public static final String OK = "OK"; 21 public static final String FAIL = "FAIL"; 22 23 24 25 /** 26 * 其他自定义业务错误码 27 */ 28 29 30 31} 32

通用错误码

1package cn.soboys.springbootrestfulapi.common.error; 2 3import cn.soboys.springbootrestfulapi.common.resp.ResultCode; 4 5/** 6 * @author 公众号 程序员三时 7 * @version 1.0 8 * @date 2023/5/2 21:36 9 * @webSite https://github.com/coder-amiao 10 */ 11public enum CommonErrorCode implements ResultCode { 12 13 /** 14 * 错误请求 15 */ 16 INVALID_REQUEST(false, CommonErrorConstant.InvalidRequest, "Invalid request, for reason: "), 17 /** 18 * 参数验证错误 19 */ 20 INVALID_ARGUMENT(false, CommonErrorConstant.InvalidArgument, "Validation failed for argument "), 21 /** 22 * 未找到资源 23 */ 24 NOT_FOUND(false, CommonErrorConstant.NotFound, "Resource not found."), 25 /** 26 * 未知错误 27 */ 28 UNKNOWN_ERROR(false, CommonErrorConstant.UnknownError, "Unknown server internal error."); 29 30 31 CommonErrorCode(Boolean success, String code, String message) { 32 this.success = success; 33 this.code = code; 34 this.message = message; 35 36 } 37 38 /** 39 * 响应是否成功 40 */ 41 private Boolean success; 42 /** 43 * 响应状态码 44 */ 45 private String code; 46 /** 47 * 响应信息 48 */ 49 private String message; 50 51 52 @Override 53 public String getCode() { 54 return code; 55 } 56 57 @Override 58 public String getMessage() { 59 return message; 60 } 61 62 @Override 63 public boolean getSuccess() { 64 return success; 65 } 66 67 68} 69

正常请求

错误请求

  1. 调整后的业务异常

  2. 调整未知错误异常

对应代码已经上传更新github

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

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

点赞
收藏

评论区

加载中...

相关推荐

一站式统一返回值封装、异常处理、异常错误码解决方案—最强的Sping Boot接口优雅响应处理器 | 京东云技术团队

GracefulResponse是一个SpringBoot体系下的优雅响应处理器,提供一站式统一返回值封装、异常处理、异常错误码等功能。使用GracefulResponse进行web接口开发不仅可以节省大量的时间,还可以提高代码质量,使代码逻辑更清晰。

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

假如现在有一个Java项目,老板让你做项目组长,定义项目基础框架,系统技术架构选型,你应该如何设计一个规范的统一的RestfulAPI响应框架呢思考目前项目开发,都是基于前后端分离模式开发的,基于后端模板引擎那一套,可能已经不适用一些项目开发流程,和当下开

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

这里解决之前留下来的问题,当程序没有正常返回时候就是程序由于运行时异常导致的结果,有些异常我们可,能无法提前预知,不能正常走到我们return的R对象返回。这个时候该如何处理在SpringBoot中,可以使用@ControllerAdvice注解来启用全局

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

我们目前已经设计出了,包含全局响应,异常错误响应进行了统一返回。但是错误内容我们设计的比较模糊统一,还可以进行细化这样更有利于定位错误当我们需要调用Http接口时,无论是在Web端还是移动端,都有可能遇到各种错误,例如参数缺失、类型错误、系统错误等。为了规

Spring Boot validator参数验证restful自定义错误码响应

关于springweb应用中关于如何使用 Bean _Validation_ _API_和hibernatevalidator的文章已经很多,本文就不再重复叙述,今天要介绍的重点是在SpringBootrestful服务中如何根据不同验证错误响应不同的自定义错误码。下面直接上代码。一、定义restful统一结果返回

Spring Boot @ControllerAdvice+@ExceptionHandler处理controller异常

需求:  1.springboot 项目restful 风格统一放回json  2.不在controller写trycatch代码块简洁controller层  3.对异常做统一处理,同时处理@Validated校验器注解的异常方法:  @ControllerAdvice注解定义全局异常处理类@ControllerAdvice