第一步 定义全局R类制定标准
代码定义了一个通用的返回类 R<T>
,用于封装API请求的结果,包括状态码、消息和数据。该类使用了Lombok的@Data
注解来减少样板代码(如getter、setter方法等)的编写。以下是代码的一些解释和建议:
-
泛型类 R:这个类是一个泛型类,能够处理任意类型的数据返回。
-
属性:
code
: 状态码,用来表示操作结果的状态。msg
: 消息,通常用来描述操作的结果或错误信息。data
: 泛型类型,实际返回的数据内容。
-
静态方法:
OK(T data)
和OK()
:用于创建成功的响应对象,其中包含一个状态码200和消息"成功"。前者接受一个参数作为数据部分,后者不携带数据。error(Integer code, String msg)
:用于创建错误的响应对象,允许调用者指定状态码和错误消息。
第二步 创建exception 自定义BizExceptionBizExceptionEUnm枚举类型
-
枚举类型:
BizExceptionEnum
是一个枚举类,每个枚举常量代表一种特定类型的业务异常,并且每一个都关联有一个错误码和一条消息。 -
构造函数:私有的构造函数用于初始化每个枚举实例的错误码和消息。
-
Lombok @Getter 注解:通过在字段上添加
@Getter
注解,Lombok 自动生成相应的 getter 方法,简化了代码。 -
-
属性:
code
: 异常状态码。msg
: 异常信息。
-
构造函数:
- 第一个构造函数接受一个整型的状态码和一条消息字符串,适用于需要直接指定这些值的情况。
- 第二个构造函数接受一个
BizExceptionEnum
枚举实例,通过该枚举实例初始化状态码和消息,这种方式提高了代码的可读性和复用性。
第三步 创造全局异常处理器的类
-
@ControllerAdvice:这个注解用于定义全局异常处理器类,它能够将异常处理逻辑集中在一个地方,而不是分散在各个控制器中。
-
@ResponseBody:该注解表明返回的对象应该直接写入HTTP响应体中(通常作为JSON格式),而不是被视为一个视图名称。
-
error(Exception e):这是一个通用的异常处理方法,捕获所有类型的异常,并返回一个包含错误信息的对象。
-
handleBizException(BizException e):这是专门用来处理自定义业务异常
BizException
的方法。它从异常对象中提取错误码和消息,并返回一个详细的错误响应。