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
}
相关推荐
速易达网络35 分钟前
基于Java TCP 聊天室
java·开发语言·tcp/ip
java1234_小锋1 小时前
[免费]SpringBoot+Vue勤工助学管理系统【论文+源码+SQL脚本】
spring boot·后端·mybatis·勤工助学
沿着路走到底1 小时前
JS事件循环
java·前端·javascript
爱笑的眼睛111 小时前
超越 `cross_val_score`:深度解析Scikit-learn交叉验证API的架构、技巧与陷阱
java·人工智能·python·ai
❀͜͡傀儡师2 小时前
SpringBoot 扫码登录全流程:UUID 生成、状态轮询、授权回调详解
java·spring boot·后端
a努力。2 小时前
国家电网Java面试被问:Spring Boot Starter 制作原理
java·spring boot·面试
一 乐2 小时前
酒店预约|基于springboot + vue酒店预约系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
guslegend3 小时前
Tomact高级使用及原理剖析
java
Code blocks3 小时前
SpringBoot从0-1集成Minio对象存储
java·spring boot·后端