Result统一返回结果的控制器方法

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. 使用 withCodewithMsg
// 创建一个带有状态码和消息的 Result 对象
Result<Object> result = Result.withCode(200).withMsg("Operation completed successfully.");
b. 使用 withCodeput
// 创建一个带有状态码和数据的 Result 对象
Result<Object> result = Result.withCode(200).put("key", "value");
c. 使用 withMsgput
// 创建一个带有消息和数据的 Result 对象
Result<Object> result = Result.withMsg("Operation completed successfully.").put("key", "value");
6. 注意事项
  • withCodewithMsgput 方法可以单独使用,也可以组合使用,根据需求选择合适的组合方式。
  • 在使用 put 方法添加数据时,请确保数据类型与 Result 类声明的类型一致,以避免类型转换错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值