SpringBoot3怎么做统一结果封装?

码农老张 后端 2024-08-01

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 }

转载来源:https://juejin.cn/post/7358670107901673509

Apipost 私有化火热进行中

评论