定义 R 的工具类,统一封装返回结果

package com.example.emos.wx.api.common.util;

import org.apache.http.HttpStatus; // Apache 的 HTTP 状态码工具类
import java.util.HashMap;

/**
 * 通用响应工具类,用于统一封装接口返回值。
 * 继承自 HashMap,方便存储键值对数据。
 */
public class R extends HashMap<String, Object> {
    
    /**
     * 默认构造方法:
     * 初始化时,默认返回成功的状态码和消息。
     * 状态码:HttpStatus.SC_OK(200)
     * 消息:"success"
     */
    public R() {
        put("code", HttpStatus.SC_OK); // 设置默认状态码
        put("msg", "success");         // 设置默认消息
    }

    /**
     * 静态方法:构造一个默认成功的响应
     * 返回:包含默认状态码 200 和消息 "success" 的 R 对象
     */
    public static R ok() {
        return new R();
    }

    /**
     * 静态方法:构造一个成功响应,并设置自定义的消息
     * 参数:msg - 自定义成功消息
     * 返回:包含默认状态码 200 和自定义消息的 R 对象
     */
    public static R ok(Object msg) {
        R r = new R();
        r.put("msg", msg); // 更新默认的消息
        return r;
    }

    /**
     * 静态方法:构造一个成功响应,并添加额外的键值对数据
     * 参数:map - 包含额外数据的 HashMap
     * 返回:包含默认状态码 200、默认消息以及额外数据的 R 对象
     */
    public static R ok(HashMap<String, Object> map) {
        R r = new R();
        r.putAll(map); // 将 map 中的所有数据添加到 R 对象中
        return r;
    }

    /**
     * 静态方法:构造一个错误响应,指定状态码和错误消息
     * 参数:
     * - code: 错误状态码
     * - msg: 错误消息
     * 返回:包含指定状态码和消息的 R 对象
     */
    public static R error(Integer code, String msg) {
        R r = new R();
        r.put("code", code); // 设置错误状态码
        r.put("msg", msg);   // 设置错误消息
        return r;
    }

    /**
     * 静态方法:构造一个错误响应,使用默认状态码 500 和自定义错误消息
     * 参数:msg - 自定义错误消息
     * 返回:包含默认状态码 500 和自定义消息的 R 对象
     */
    public static R error(String msg) {
        return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg); // 调用其他方法设置默认状态码
    }

    /**
     * 静态方法:构造一个默认的错误响应
     * 默认状态码:500
     * 默认消息:"未知错误,请联系管理员处理"
     * 返回:包含默认状态码和消息的 R 对象
     */
    public static R error() {
        return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知错误,请联系管理员处理");
    }

    /**
     * 重写 HashMap 的 put 方法,返回当前 R 对象。
     * 支持链式调用:r.put("key1", "value1").put("key2", "value2");
     * 参数:
     * - key: 键
     * - value: 值
     * 返回:当前 R 对象
     */
    @Override
    public R put(String key, Object value) {
        super.put(key, value); // 调用父类的 put 方法
        return this;           // 返回当前对象支持链式调用
    }
}

通过R工具类的调用,我们可以封装任何web返回对象。 

例如:

  1. 默认成功响应:

    {"code":200,"msg":"success"}

  2. 自定义消息的成功响应:

    {"code":200,"msg":"操作成功"}

  3. 带额外数据的成功响应:

    {"code":200,"msg":"success","key1":"value1","key2":"value2","extra":"附加信息"}

  4. 自定义错误响应:

    {"code":404,"msg":"资源未找到"}

  5. 默认错误响应:

    {"code":500,"msg":"未知错误,请联系管理员处理"}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值