统一封装类详解:Result
在大多数项目中,为了统一返回格式和处理结果,我们经常会定义一个通用的结果封装类。上述代码展示了一个名为Result
的泛型类,用于封装接口返回的结果。
类结构
该类具有以下属性:
code
(int):状态码,表示接口调用的执行情况;message
(String):提示信息,对接口调用结果进行描述;data
(T):泛型数据,表示接口调用返回的数据。
同时,它提供了带参构造函数、无参构造函数以及三个相关的静态方法,并使用@Data
、@NoArgsConstructor
和@AllArgsConstructor
注解简化开发。
构造函数
-
public Result(T data)
构造函数:- 用于响应成功执行的情况,默认的状态码为200(成功);
- 接收一个类型为
T
的参数data
,表示接口调用返回的数据。
-
public Result(T data, boolean success, String message)
构造函数:- 当
success
参数为true
时,表示执行成功,状态码为200(成功)、提示信息为"success"; - 当
success
参数为false
时,表示执行失败,可以自定义错误的状态码和提示信息; - 接收一个类型为
T
的参数data
,表示接口调用返回的数据; - 接收一个类型为
boolean
的参数success
,表示执行的成功与否; - 接收一个类型为
String
的参数message
,作为失败时的提示信息。
- 当
-
public Result(int code, String message)
构造函数:- 用于自定义状态码和提示信息的情况,例如特定的错误场景;
- 接收一个类型为
int
的参数code
,表示自定义的状态码; - 接收一个类型为
String
的参数message
,表示接口调用结果的描述信息。
静态方法
该封装类还提供了两个静态方法:
-
public static <T> Result<T> fail(String message)
:- 返回一个执行失败的结果对象;
- 接收一个类型为
String
的参数message
,表示失败时的提示信息。
-
public static <T> Result<T> fail(int code, String message)
:- 返回一个执行失败的结果对象,并可以自定义状态码和提示信息;
- 接收一个类型为
int
的参数code
,表示自定义的状态码; - 接收一个类型为
String
的参数message
,表示接口调用结果的描述信息。
使用示例
以下是一些使用示例,展示了如何使用Result
封装类来处理接口返回结果:
@GetMapping("/user/{id}")
public Result<User> getUserById(@PathVariable int id) {
User user = userService.getUserById(id);
if (user == null) {
return Result.fail("User not found");
}
return new Result<>(user);
}
@PostMapping("/login")
public Result<String> login(@RequestBody LoginRequest request) {
boolean isValid = userService.authenticate(request.getUsername(), request.getPassword());
if (isValid) {
// 返回登录成功的结果
return new Result<>("Login successful");
} else {
// 返回登录失败的结果,并自定义错误状态码和提示信息
return Result.fail(401, "Invalid username or password");
}
}
你可以根据项目需求,在Result
封装类中加入更多的方法和功能,以满足特定的业务需求。使用该类可以统一接口返回的数据格式和处理逻辑,提高代码的可读性和维护性,同时减少重复劳动。