SpringBoot定义统一的返回结果

本文介绍了在前后端分离的项目中,如何在SpringBoot后端定义统一的返回结果。通过创建响应状态码的枚举类和响应数据的实体类,提高了开发效率和沟通效果。示例中展示了如何在Controller中改造方法的返回值,以返回统一格式的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    前后端分离项目中,后端开发需要写接口来处理请求并返回响应数据,而为响应数据定义统一的返回格式有利于提高开发效率和沟通的成本,比如包括状态码、操作提示信息、数据等。这样前端在拿到状态码、以及提示信息就可以在前端提示用户,并在页面展示响应数据。
    返回格式比如:
在这里插入图片描述
    那么接下来就在SpringBoot项目中定义统一返回结果。
    步骤:

  • 定义响应状态码以及信息的枚举类
public enum ResponseCode {
    /**
     * 成功
     */
    SUCCESS(200, "操作成功"),
    /**
     * 失败
     */
    FAILURE(500, "操作失败");

    /**
     * 状 态 码
     */
    @Getter
    private final int code;

    /**
     * 携 带 消 息
     */
    @Getter
    private final String message;

    /**
     * 构 造 方 法
     */
    ResponseCode(int code, String message) {
        this.code = code;
        this.message = message;
    }
}

  • 定义响应数据的实体类
@Data
public class ServerResponse<T> implements Serializable {

    /**
     * 状态码
     */
    private int code;

    /**
     * 提示消息
     */
    private String msg;

    /**
     * 返回数据
     */
    private T data;

    /**
     * 返回数据集元素的个数
     */
    private Integer total;

    /**
     * 成功操作,携带默认信息
     */
    public static <T> ServerResponse<T> success() {
        return success(ResponseCode.SUCCESS.getMessage());
    }
    
    /**
     * 成功操作, 携带成功状态码、自定义消息、数据和数据集中元素个数
     */
    public static <T> ServerResponse<T> success(String message, T data, Integer total) {
        return success(ResponseCode.SUCCESS.getCode(), message, data, total);
    }
    
    /**
     * 成功操作, 携带成功状态码、自定义消息、数据
     */
    public static <T> ServerResponse<T> success(String message, T data) {
        return success(ResponseCode.SUCCESS.getCode(), message, data, null);
    }

    /**
     * 成功操作, 携带成功状态码、自定义消息
     */
    public static <T> ServerResponse<T> success(String message) {
        return success(message, null);
    }

    /**
     * 成功操作, 携带成功状态码、默认消息、数据
     */
    public static <T> ServerResponse<T> success(T data) {
        return success(ResponseCode.SUCCESS.getMessage(), data);
    }

    /**
     * 成功操作, 携带自定义成功状态码、自定义消息和数据
     */
    public static <T> ServerResponse<T> success(int code, String message) {
        return success(code, message, null, null);
    }
    
    /**
     * 成功操作, 携带自定义状态码、消息、数据和数据集中元素个数
     */
    public static <T> ServerResponse<T> success(int code, String message, T data, Integer total) {
        ServerResponse<T> result = new ServerResponse<T>();
        result.setCode(code);
        result.setMsg(message);
        result.setData(data);
        result.setTotal(total);
        return result;
    }

    /**
     * 失败操作, 携带默认数据
     */
    public static <T> ServerResponse<T> failure() {
        return failure(ResponseCode.FAILURE.getMessage());
    }

    /**
     * 失败操作, 携带失败状态码、自定义消息
     */
    public static <T> ServerResponse<T> failure(String message) {
        return failure(message, null);
    }

    /**
     * 失败操作, 携带失败状态码、自定义消息、数据
     */
    public static <T> ServerResponse<T> failure(String message, T data) {
        return failure(ResponseCode.FAILURE.getCode(), message, data);
    }

    /**
     * 失败操作, 携带自定义状态码、自定义消息
     */
    public static <T> ServerResponse<T> failure(int code, String message) {
        return failure(code, message, null);
    }
    
    /**
     * 失败操作, 携带自定义状态码、消息、数据
     */
    public static <T> ServerResponse<T> failure(int code, String message, T data) {
        ServerResponse<T> result = new ServerResponse<T>();
        result.setCode(code);
        result.setMsg(message);
        result.setData(data);
        return result;
    }
}

  • 改造controller中方法的返回值
	@ApiOperation("查询设备标签")
    @GetMapping("listDeviceTag")
    public ServerResponse listDeviceTag(String deviceUuid) {
        DeviceTag deviceTag = new DeviceTag();
        deviceTag.setDeviceUuid(deviceUuid);
        List<DeviceTag> deviceTags = deviceTagService.listDeviceTag(deviceTag);
        return ServerResponse.success("ok",deviceTags);
    }

    总结:这样就完成了定义统一的返回结果,这里我只是进行了简单的示范,开发中具体要求的状态码、返回消息等还需按照需求来定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值