1. 引言
在应用程序的控制器层,统一返回结果是一种良好的实践,它可以简化代码、提高可读性,并确保客户端获得一致的响应格式。
2. Result类
首先,确保您已经正确导入 Result 类和相关的 Java 类。
public class Result<T> {
private int code;
private String msg;
private Map<String, T> data;
public Result(int code, String msg, Map<String, T> data) {
this.code = code;
this.msg = msg;
this.data = data;
}
public static Result<Object> withCode(int code) {
return new Result<>(code, null, null);
}
public Result<T> withMsg(String msg) {
this.msg = msg;
return this;
}
public Result<T> put(String key, T value) {
if (data == null) {
data = new HashMap<>();
}
data.put(key, value);
return this;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Map<String, T> getData() {
return data;
}
public void setData(Map<String, T> data) {
this.data = data;
}
}
3. 示例 Controller 类
以下是一个示例的控制器类,展示了如何在不同场景下使用 Result 类来统一返回结果。
public class UserController {
// 模拟用户注册方法
public Result<Object> registerUser(String username, String password) {
// 在这里编写注册逻辑...
// 假设注册成功,返回成功的结果
Result<Object> result = Result.withCode(200)
.withMsg("User registered successfully")
.put("username", username);
return result;
}
// 模拟用户登录方法
public Result<Object> loginUser(String username, String password) {
// 在这里编写登录逻辑...
// 假设登录成功,返回成功的结果
Result<Object> result = Result.withCode(200)
.withMsg("User logged in successfully")
.put("username", username);
return result;
}
}
4. 返回结果的方式
a. 直接返回 Result 对象
1. withCode 方法
withCode 方法用于创建一个只包含状态码的 Result 对象。
// 创建一个只有状态码的 Result 对象
Result<Object> result = Result.withCode(200);
2. withMsg 方法
withMsg 方法用于设置 Result 对象的消息。
// 创建一个带有消息的 Result 对象
Result<Object> result = Result.withCode(200).withMsg("Operation completed successfully.");
3. put 方法
put 方法用于向 Result 对象中添加数据。
// 创建一个带有数据的 Result 对象
Result<Object> result = Result.withCode(200).put("key", "value");
4. 单独使用示例
a. 单独使用 withCode
// 创建一个只有状态码的 Result 对象
Result<Object> result = Result.withCode(200);
b. 单独使用 withMsg
// 创建一个带有消息的 Result 对象
Result<Object> result = Result.withCode(200).withMsg("Operation completed successfully.");
c. 单独使用 put
// 创建一个带有数据的 Result 对象
Result<Object> result = Result.withCode(200).put("key", "value");
5. 两个方法的组合使用示例
a. 使用 withCode 和 withMsg
// 创建一个带有状态码和消息的 Result 对象
Result<Object> result = Result.withCode(200).withMsg("Operation completed successfully.");
b. 使用 withCode 和 put
// 创建一个带有状态码和数据的 Result 对象
Result<Object> result = Result.withCode(200).put("key", "value");
c. 使用 withMsg 和 put
// 创建一个带有消息和数据的 Result 对象
Result<Object> result = Result.withMsg("Operation completed successfully.").put("key", "value");
6. 注意事项
- withCode、withMsg 和 put 方法可以单独使用,也可以组合使用,根据需求选择合适的组合方式。
- 在使用 put 方法添加数据时,请确保数据类型与 Result 类声明的类型一致,以避免类型转换错误。