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
}
相关推荐
xyyaihxl12 小时前
springboot系列--自动配置原理
java·spring boot·后端
weyyhdke13 小时前
Java进阶-在Ubuntu上部署SpringBoot应用
java·spring boot·ubuntu
javaDocker13 小时前
沉浸式AI编程:IDEA + Claude Code 的终极方案
java·intellij-idea·ai编程
两年半的个人练习生^_^13 小时前
每日一学:设计模式之代理模式
java·设计模式·代理模式
何妨呀~13 小时前
K8s+Docker部署实战
java·linux·kubernetes
手握风云-13 小时前
基于倒排索引的 Java 文档搜索引擎(一)
java·搜索引擎
无籽西瓜a13 小时前
【西瓜带你学设计模式 | 第十九期 - 状态模式】状态模式 —— 状态流转与行为切换实现、优缺点与适用场景
java·后端·设计模式·状态模式·软件工程
Han.miracle13 小时前
微服务注册中心实操:Eureka+Zookeeper对比+CAP定理详解
java·spring boot·spring
llm大模型算法工程师weng13 小时前
Java面试核心突破:面向对象与设计模式
java·设计模式·面试