首页 > 其他分享 >后端返回值方法

后端返回值方法

时间:2023-10-13 15:22:20浏览次数:28  
标签:code return ResCode data ResEntity 返回值 方法 public

后端接口怎么将值返回给前端呢?以下是其中一种方法:

1、返回实体类

@Data
@Builder
public class ResEntity implements Serializable {
    /**
     * 错误编号
     */
    private Integer code;
    /**
     * 错误信息
     */
    private String msg;
    /**
     * 返回对象
     */
    private Object data;
    /**
     * 是否成功
     */
    private boolean success;
}

2、返回状态码


import lombok.Getter;

/**
 * 错误码枚举类
 *
 * @author ZhengGong
 * @date 2019/6/12
 */
@Getter
public enum ResCode {

    SUCCESS(0, "成功!"),
    OK(200, "OK"),
    ERROR(201, "失败"),
    REQUEST_NOT_FOUND(202, "请求不存在!"),
    HTTP_BAD_METHOD(203, "请求方式不支持!"),
    BAD_REQUEST(204, "请求异常!"),
    PARAM_NOT_MATCH(205, "参数不匹配!"),
    PARAM_NOT_NULL(206, "参数不能为空!"),
    JSON_PARSE_ERROR(207, "JSON转换异常"),
    C8_UNSUPPORTED_ENCODING_ERROR(208, "双编码异常"),
    AUTHORIZE_ERROR(209, "请求未授权!"),
    AUTHORIZE_UP_ERROR(210, "请求未授权,账号或密码错误!"),


    /**
     * 业务类
     */
    DMP_DATA_NULL(3001, "找不到对应的数据,或者数据已经同步成功"),
    DMP_DATA_TRANSLATE_FAIL(3002, "调用DMP同步数据失败,请重试"),
    DMP_FILE_URL_ILLEGAL(3003, "获取到的DMP文件路径不合法"),
    DMP_FILE_PUBLISH_ERROR(3004, "DMP发布文件失败"),
    SKU_CODE_NOTFOUND(3005, "SKU CODE没有找到相关的SKU数据"),
    SKU_CODE_DUPLICATE(3006, "SKU CODE找出重复的数据,请联系管理员"),
    SKU_CODE_EMPTY(3007, "SKU CODE为空"),


    RECORD_LOCK(888, "数据正在执行更新,已被锁定,请稍后再试"),
    SYSTEM_RUNTIME_ERROR(999, "系统异常!");

    private Integer code;

    private String message;

    ResCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * 通过code返回枚举
     *
     * @param code
     * @return
     */
    public static ResCode parse(Integer code) {
        ResCode[] values = values();
        for (ResCode value : values) {
            if (value.getCode().equals(code)) {
                return value;
            }
        }
        throw new RuntimeException("Unknown code of ResultEnum");
    }
}

3、异常类


import com.centricsoftware.commons.em.ResCode;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 异常基类
 *
 * @author ZhengGong
 * @date 2019/6/18
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class BaseException extends RuntimeException {
    private Integer code;
    private String message;
    private Object data;

    public BaseException(ResCode resCode) {
        super(resCode.getMessage());
        this.code = resCode.getCode();
        this.message = resCode.getMessage();
    }

    public BaseException(ResCode resCode, Object data) {
        this(resCode);
        this.data = data;
    }

    public BaseException(Integer code, String message) {
        super(message);
        this.code = code;
        this.message = message;
    }

    public BaseException(Integer code, String message, Object data) {
        this(code, message);
        this.data = data;
    }

    public BaseException(ResCode code, Throwable e) {
        this(code);
        data = e;
    }

    public ResCode getResCode() {
        return ResCode.parse(code);
    }


}

4、接口返回信息


import cn.hutool.core.util.StrUtil;
import com.centricsoftware.commons.em.ResCode;
import com.centricsoftware.commons.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.stringtemplate.v4.ST;

import java.net.URLEncoder;

/**
 * 接口返回信息
 *
 * @author ZhengGong
 * @date 2019/9/16
 */
@Slf4j
public class WebResponse {

    /**
     * 失败返回特定的消息实体
     *
     * @param code    错误代码
     * @param message 错误信息
     * @param data    具体消息实体
     * @return 消息实体ResEntity
     */
    public static ResEntity failure(Integer code, String message, Object data) {
        return ResEntity.builder().code(code).msg(message).data(data).success(false).build();
    }

    /**
     * 失败返回特定的消息实体
     *
     * @param code    错误代码
     * @param message 错误信息
     * @return 消息实体ResEntity
     */
    public static ResEntity failure(Integer code, String message) {
        return ResEntity.builder().code(code).msg(message).success(false).build();
    }

    /**
     * 失败返回特定的消息实体
     *
     * @param respCode 错误代码封装枚举类
     * @param data     具体消息实体
     * @return 消息实体ResEntity
     */
    public static ResEntity failure(ResCode respCode, Object data) {
        return getStringObjectMap(respCode, data, false);
    }

    /**
     * 失败返回特定的消息实体
     *
     * @param respCode 错误代码封装枚举类
     * @return 消息实体ResEntity
     */
    public static ResEntity failure(ResCode respCode) {
        return getStringObjectMap(respCode, false);
    }

    /**
     * 失败返回特定的消息实体
     *
     * @param e 错误基类
     * @return 消息实体ResEntity
     */
    public static <T extends BaseException> ResEntity failure(T e) {
        return failure(e.getCode(), e.getMessage(), e.getData());
    }

    /**
     * 成功返回特定的状态码和信息
     *
     * @param respCode 成功代码封装枚举类
     * @param data     具体消息实体
     * @return 消息实体ResEntity
     */
    public static ResEntity success(ResCode respCode, Object data) {
        return getStringObjectMap(respCode, data, true);
    }

    private static ResEntity getStringObjectMap(ResCode respCode, Object data, Boolean success) {
        return ResEntity.builder().code(respCode.getCode()).msg(respCode.getMessage()).data(data).success(success).build();
    }

    /**
     * 成功返回特定的状态码和信息
     *
     * @param respCode 成功代码封装枚举类
     * @return 消息实体ResEntity
     */
    public static ResEntity success(ResCode respCode) {
        return getStringObjectMap(respCode, true);
    }

    private static ResEntity getStringObjectMap(ResCode respCode, Boolean success) {
        return ResEntity.builder().code(respCode.getCode()).msg(respCode.getMessage()).success(success).build();
    }

    public static ResEntity failure(String message) {
        return ResEntity.builder().code(ResCode.ERROR.getCode()).msg(message).success(false).build();
    }

    public static ResEntity success(String message) {
        return ResEntity.builder().code(ResCode.SUCCESS.getCode()).msg(message).success(true).build();
    }

    public static ResEntity autoResponse(Object obj, String error) {
        if (StrUtil.isBlank(error)) {
            return ResEntity.builder().code(ResCode.SUCCESS.getCode()).msg(ResCode.SUCCESS.getMessage()).success(true).data(obj).build();
        } else {
            return ResEntity.builder().code(ResCode.ERROR.getCode()).msg(error).success(false).data(obj).build();
        }

    }

}

5、实例

public ResEntity pushModifyAttribute(){
  return WebResponse.failure(ResCode.SUCCESS, 值);
}

标签:code,return,ResCode,data,ResEntity,返回值,方法,public
From: https://www.cnblogs.com/Retired-lad/p/17762157.html

相关文章

  • pod常见问题及解决方法整理
    pod常见问题及解决方法整理参考链接https://blog.51cto.com/u_15127577/4139629一、pod处于pending状态原因:如果Pod被卡在Pending状态,就意味着它不能调度在某个节点上。一般来说,这是因为某种类型的资源不足而导致无法调度。排查方法:1、查看pod详细信息,event中会显示具体无......
  • 直播间频繁被封禁是什么原因?有什么方法能够减少违规?干货分享,希望能对正在做无人直播的
    你的直播间为什么频繁被判违规?特别是新手用户建议来看一下这篇文章,为了更好地理解这个问题,我们首先需要了解直播平台的检测原理。其实也很简单,就是对视频和音频进行抽帧跟之前的直播和其他的直播间进行对比,如果画面和语音重复度过高,就有可能被判定违规,下面就分享一下我自己做去重......
  • 手机直播源码,当前页卡指示器的简单实现方法
    手机直播源码,当前页卡指示器的简单实现方法初始化的时候先初始化与list集合size相等的圆点个数:  intsize=mList.size();    initPageIndicator(size);​然后是给ViewPager设置监听事件,并在onPageSelected方法中设置被选中的当前页圆点为选中状态:    mView......
  • 建筑建模方法(From Mesh)
    1.切割单体化 2.特征线组合优化3.拓扑强化+模型库4.空间划分  5.逆程序化建模 ......
  • BLE_HID类设备连接上主机后发数据返回错误码解决方法
    继上文HID设备的使用,BLE_HID例程增加报表描述符使用我们在BLE_HID类蓝牙设备应用中调用HidDev_Report函数发送数据,如果出现了返回以下错误码时,应该是HID数据通道未能完全成功打开,我们可以在代码中添加处理以手动辅助开启,#definebleInvalidTaskIDINVALID_TASK......
  • 模板方法
    概述在模板方法模式中,可以将子类共性的部分放在父类中实现,而特性的部分延迟到子类中实现,只需将特性部分在父类中声明成抽象方法即可,使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤,不同的子类可以以不同的方式来实现这些逻辑。(在模板方法模式中,我们可以将相同部分......
  • EasyMock 使用方法与原理剖析
    https://www.ibm.com/developerworks/cn/opensource/os-cn-easymock/ Mock方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开。编写自定义的Mock对象需要额外的编码工作,同时也可能引入错误。Ea......
  • react中关于父子组件传值已经方法调用总结
    问题:1、封装自定义组件后,父子组件的传值与方法调用则是必须进行的操作,但是在网上看到多种的方法后,有的方法一个组件下好使,但是换一个组件后就不好用了有的方法根本就不好使,不知道是什么原因2、父子组件之间的传值都是用props这个毫无疑问,也没有什么问题3、父子组件方法调用......
  • Html5大文件断点续传实现方法
    大文件分块一般常用的web服务器都有对向服务器端提交数据有大小限制。超越一定大小文件服务器端将返回拒绝信息。当然,web服务器都提供了配置文件可能修改限制的大小。针对ii实现大文件的上传网上也有一些通过修改web服务器限制文件大小来实现。不过这样对web服务器的平安带了问题......
  • docker中使用systemctl方法
    想在docker中使用Flexmonster,但是在配置环境后,发现Flexmonster需要使用systemctl来管理服务,然而在docker容器中没有systemctl可用,于是开始折腾之旅!以下是解决办法:1、下载systemctlwgethttps://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/d......