找回密码
 立即注册
首页 业界区 安全 《历史代码分析》2、接口结果封装

《历史代码分析》2、接口结果封装

浅皮懔 2025-6-1 21:13:45
1.png

本系列《历史代码分析》为工作中遇到具有代表性的代码,已做脱敏处理。今天我们讲一下接口结果封装,制定统一结构的接口返回结果,便于和前端快速对接。
代码如下:
  1. package tech.xueyao.common;
  2. import tech.xueyao.contant.enums.ResponseStatus;
  3. import java.io.Serializable;
  4. public class BaseResponse implements Serializable {
  5.         private Integer code = 10000;
  6.         private String msg = "操作完成";
  7.         private Object data;
  8.         public Integer getCode() {
  9.                 return code;
  10.         }
  11.         public void setCode(Integer code) {
  12.                 this.code = code;
  13.         }
  14.         public String getMsg() {
  15.                 return msg;
  16.         }
  17.         public void setMsg(String msg) {
  18.                 this.msg = msg;
  19.         }
  20.         public Object getData() {
  21.                 return data;
  22.         }
  23.         public void setData(Object data) {
  24.                 this.data = data;
  25.         }
  26.         public void setStatus(ResponseStatus status) {
  27.                 this.code = status.code();
  28.                 this.msg = status.msg();
  29.         }
  30.         public BaseResponse(Integer code, String msg) {
  31.                 this.code = code;
  32.                 this.msg = msg;
  33.         }
  34.         public BaseResponse(ResponseStatus status) {
  35.                 this.code = status.code();
  36.                 this.msg = status.msg();
  37.         }
  38.         public BaseResponse(Integer code, String msg,Object data) {
  39.                 this.code = code;
  40.                 this.msg = msg;
  41.                 this.data=data;
  42.         }
  43.         public BaseResponse() {
  44.         }
  45. }
复制代码
以下是对这段 Java 代码的分析:
1. 代码概述

这段代码定义了一个名为 BaseResponse​ 的基础类,它是一个通用的响应类,用于封装接口返回的结果。
2. 成员变量
  1. private Integer code = 10000;
  2. private String msg = "操作完成";
  3. private Object data;
复制代码

  • ​code​:表示响应的状态码,默认为 10000​,。
  • ​msg​:表示响应的消息,默认为 "操作完成",错误信息也放在这个变量中。
  • ​data​:表示响应返回的数据,定义为 Object​,可以是任意类型的数据。
3. 构造函数
  1. public BaseResponse(Integer code, String msg) {
  2.     this.code = code;
  3.     this.msg = msg;
  4. }
  5. public BaseResponse(ResponseStatus status) {
  6.     this.code = status.code();
  7.     this.msg = status.msg();
  8. }
  9. public BaseResponse(Integer code, String msg, Object data) {
  10.     this.code = code;
  11.     this.msg = msg;
  12.     this.data = data;
  13. }
  14. public BaseResponse() {
  15. }
复制代码

  • 提供了多个构造函数,可以创建不同参数的 BaseResponse​ 对象:

    • ​BaseResponse(Integer code, String msg)​:通过状态码和消息创建对象。
    • ​BaseResponse(ResponseStatus status)​:通过 ResponseStatus​ 枚举类创建对象。
    • ​BaseResponse(Integer code, String msg, Object data)​:通过状态码、消息和数据创建对象。
    • ​BaseResponse()​:无参构造函数,使用默认的状态码和消息。

4. 总结

​BaseResponse​ 类是一个通用的响应类,提高了代码的可读性。同时,使用 ResponseStatus​ 枚举类来管理响应状态。
补充

ResponseStatus代码如下:
  1. package tech.xueyao.contant.enums;
  2. public enum ResponseStatus {
  3.         SUCCESS(10000, "成功"),
  4.         INVALID_SIGNATURE(20002, "无效签名"),
  5.         SEND_SMS_MAXIMUM(20003, "短信发送次数达到上限"),
  6.         SEND_SMS_FAIL(20004,"短信发送失败"),
  7.     BAD_REQUEST(40000,"请求有误"),
  8.         BADPARAM(40001, "参数错误"),
  9.         UNAUTHORIZED(40401, "用户未身份认证"),
  10.         NO_PERMISSION(40403, "没有接口权限"),
  11.         NO_PERMISSION_DATE(40404, "没有接口数据权限"),
  12.     NOT_FOUND(40404,"您所访问的资源不存在"),
  13.     Method_NOT_ALLOWED(40405,"方法不被允许"),
  14.         EXCEPTION(50000, "业务处理失败,请稍后再试");
  15.         Integer code;
  16.         String msg;
  17.         ResponseStatus(Integer code, String msg) {
  18.                 this.code = code;
  19.                 this.msg = msg;
  20.         }
  21.         public Integer code() {
  22.                 return this.code;
  23.         }
  24.         public String msg() {
  25.                 return this.msg;
  26.         }
  27. }
复制代码
如果返回的结果涉及到分页,我们可以使用下面这个类:
  1. package tech.xueyao.common;
  2. import tech.xueyao.contant.enums.ResponseStatus;
  3. public class PageResponse extends BaseResponse {
  4.     private int pageIndex;//当前页数
  5.     private int pageSize;//分页条数
  6.     private long count;//总条数
  7.     public PagedResponse() {
  8.     }
  9.     public PagedResponse(ResponseStatus responseStatus) {
  10.         super(responseStatus);
  11.     }
  12.     public int getPageIndex() {
  13.         return pageIndex;
  14.     }
  15.     public void setPageIndex(int pageIndex) {
  16.         this.pageIndex = pageIndex;
  17.     }
  18.     public int getPageSize() {
  19.         return pageSize;
  20.     }
  21.     public void setPageSize(int pageSize) {
  22.         this.pageSize = pageSize;
  23.     }
  24.     public long getCount() {
  25.         return count;
  26.     }
  27.     public void setCount(long count) {
  28.         this.count = count;
  29.     }
  30. }
复制代码


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册