06 SpringBoot3统一结果封装

在开发基于Spring Boot的应用程序时,统一结果封装是一个非常有用的技术,特别是在生产项目中,它可以帮助我们每个团队成员输出统一的结果格式,提高代码的可维护性和可读性。

一、封装作用

  1. 便于前端调用 在传统的开发中,接口返回的结果往往是各种形式的,包括不同的状态码、不同的数据格式等,这给前端开发和接口调用带来了一定的困扰。通过统一结果封装,我们可以定义一套统一的返回格式,包括状态码、消息和数据,使得前端人员调用更加方便。
  2. 减少后端开发量 通过统一结果封装,后端开发人员可以直接使用封装的结果类,减少重复的代码编写,提高开发效率,减少出错的可能性。
  3. 提高接口可维护性 统一结果封装可以使接口返回结果更加规范和易于理解,降低了接口变更对前后端代码的影响,提高了代码的可维护性和可读性。

二、封装实现

在Spring Boot应用中实现统一结果封装通常包括以下几个步骤:

1 创建统一结果封装类

首先,我们需要创建一个统一的结果封装类,用于包装接口返回的结果。这个类通常包括状态码、消息、数据和时间戳字段:

java 复制代码
package com.one.pojian.entity.base;

import lombok.Data;

/**
 * @description:结果统一封装
 * @version: $
 */
@Data
public class Result {
    private String code;
    private String message;
    private Object data;
    private Long timeStamp;

    public static Result initResult(ResultCode resultCode) {
        Result result = new Result();
        result.setCode(resultCode.getCode());
        result.setMessage(resultCode.getMessage());
        result.setTimeStamp(System.currentTimeMillis());
        return result;
    }

    public static Result success() {
        Result result = Result.initResult(ResultCode.SUCCESS);
        return result;
    }

    public static Result success(Object data) {
        Result result = Result.initResult(ResultCode.SUCCESS);
        result.setData(data);
        return result;
    }

    public static Result fail() {
        Result result = Result.initResult(ResultCode.FAILURE);
        return result;
    }

    public static Result fail(ResultCode resultCode) {
        Result result = Result.initResult(resultCode);
        return result;
    }
}

2 状态枚举类

在统一结果封装中,通常会定义一个状态枚举类来表示接口返回结果的状态。这样可以统一管理接口返回的状态码和状态信息,提高代码的可读性和可维护性。

java 复制代码
package com.one.pojian.entity.base;

import lombok.Getter;

@Getter
public enum ResultCode {
    SUCCESS("00000", "请求成功"),
    FAILURE("99999", "请求失败"),
    EMPTY_PARAM("A0410", "请求必填参数为空");

    private String code;
    private String message;

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

三、调用测试

测试方法:

kotlin 复制代码
@RequestMapping("/testFail")
public Result testFail() {
	return Result.fail(ResultCode.EMPTY_PARAM);
}

测试结果

json 复制代码
{
    "code": "A0410",
    "message": "请求必填参数为空",
    "data": null,
    "timeStamp": 1713352769949
}
相关推荐
Flittly12 小时前
【AgentScope Java新手村系列】(16)从RAG到多路检索
java·spring boot·spring
小兔崽子去哪了12 小时前
Java 生成二维码解决方案
java·后端
人活一口气16 小时前
从JVM调优到MCP协议:Java全栈技术体系深度总结与企业级架构实践
java·spring boot
NE_STOP18 小时前
Vibe Coding -- 完整项目案例实操
java
荣码18 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
SimonKing18 小时前
Google第三方授权登录
java·后端·程序员
明月光81818 小时前
从一行 @Builder 说起:重新拾起 Java 的 Lombok、注解与 Builder 模式
java
考虑考虑1 天前
Mybatis实现批量插入
java·后端·mybatis
咖啡八杯1 天前
GoF设计模式——中介者模式
java·后端·spring·设计模式
青石路1 天前
记一次多JDK版本问题的排查,一坑套一坑,差点没爬上来
java