登录
首页 >  文章 >  java教程

SpringBoot如何实现统一封装返回前端结果集

来源:亿速云

时间:2024-04-02 14:51:36 189浏览 收藏

学习文章要努力,但是不要急!今天的这篇文章《SpringBoot如何实现统一封装返回前端结果集》将会介绍到等等知识点,如果你想深入学习文章,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

我们如何封装这个结果?我们应该注意返回到前端的数据中包含的信息。

一般来说,首先,这次必须有一个code来表示接口的状态。例如,0表示成功,1表示失败,2表示必须传递错误的参数,4表示系统异常,依此类推。这只是一个简单的例子。许多人可能会有疑问。HTTP协议本身已经有了相应的返回代码定义。 例如: 200表示成功, 500表示服务器错误, 404表示找不到页面。

例如,200表示请求成功,但它不能描述请求中的业务结果。 例如,用户名已经存在,事实上,业务并不成功,但HTTP的结果肯定是200, 因此我们需要一个代码来描述我们的业务状态。

除了代码之外,还有一些提示信息,如操作成功、系统异常、用户名已经存在等,所以我们添加了一个message字段。

此外,还有我们的核心数据。例如,我根据ID获取数据。此数据的具体内容必须返回到前端,因此必须有数据。此数据使用什么类型?这种类型必须是多样的,所以我们需要使用统一的父类,以便对象可以接收所有类型。当然,我们可以使用一些通用方法来方便操作。

然后还有我们的核心数据。例如,我根据ID获取数据。此数据的具体内容必须返回到前端,因此必须有数据。此数据使用什么类型?这种类型必须是多样的,所以我们需要使用统一的父类,以便对象可以接收所有类型。当然,我们可以使用通用方法来方便操作。

主要代码展示:

public class Result implements Serializable {
   private static final long serialVersionUID = -3960261604608758516L;
  private int code;
  private String msg;
  private T data;
  public static  Result success() {
        return new Result<>();
    }
 
    /**
     * 成功,默认状态码,返回消息,自定义返回数据
     * @param data 自定义返回数据
     * @param   返回类泛型,不能为String
     * @return 通用返回Result
     */
    public static  Result success(T data) {
        return new Result<>(data);
    }
 
     /**
     * 成功,默认状态码,自定义返回消息,返回数据
     * @param msg  自定义返回消息
     * @param data 自定义返回数据
     * @param   返回类泛型
     * @return 通用返回Result
     */
    public static  Result success(String msg, T data) {
        return new Result<>(msg, data);
    }
           /**
     * 成功,默认状态码,自定义返回消息,无返回数据
     *
     * @param msg 自定义返回消息
     * @param  返回类泛型
     * @return 通用返回Result
     */
    public static  Result success(String msg) {
        return new Result<>(msg);
    }
     /**
     * 失败,默认状态码,返回消息,无返回数据
     * @param  返回类泛型
     * @return 通用返回Result
     */
    public static  Result error() {
        return new Result<>(ResultCode.ERROR);
    }
     /**
     * 失败,默认状态码,自定义返回消息,无返回数据
     * @param  返回类泛型
     * @return 通用返回Result
     */
    public static  Result error(String msg) {
        return new Result<>(ResultCode.ERROR.getCode(), msg);
    }
     /**
     * 失败,自定义状态码,返回消息,无返回数据
     * @param code 自定义状态码
     * @param msg  自定义返回消息
     * @param   返回类泛型
     * @return 通用返回Result
     */
    public static  Result error(int code, String msg) {
        return new Result<>(code, msg);
    }
     /**
     * 失败,使用CodeMsg状态码,返回消息,无返回数据
      * @param resultCode CodeMsg,参数如下:
     *                   

 code 状态码      *                   

 msg  返回消息      * @param         返回类泛型      * @return 通用返回Result      */     public static  Result error(ResultCode resultCode) {         return new Result<>(resultCode);     }      /**      * 成功构造器,无返回数据      */     private Result() {         this(ResultCode.SUCCESS);     }      /**      * 成功构造器,自定义返回数据      * @param data 返回数据      */     private Result(T data) {         this(ResultCode.SUCCESS, data);     }      /**      * 成功构造器,自定义返回消息,无返回数据      * @param msg 返回消息      */     private Result(String msg) {         this(ResultCode.SUCCESS.getCode(), msg);     }            /**      * 构造器,自定义状态码,返回消息      * @param code 状态码      * @param msg  返回消息      */     private Result(int code, String msg) {         this.code = code;         this.msg = msg;     }      /**      * 成功构造器,自定义返回信息,返回数据      * @param msg  返回信息      * @param data 返回数据      */     private Result(String msg, T data) {         this(ResultCode.SUCCESS.getCode(), msg, data);     }       /**      * 构造器,自定义状态码,返回消息,返回数据      * @param code 状态码      * @param msg  返回消息      * @param data 返回数据      */     private Result(int code, String msg, T data) {         this(code, msg);         this.data = data;     }             /**      * 构造器,使用CodeMsg状态码与返回信息,自定义返回数据      * @param resultCode CodeMsg,参数如下:      *                   

 code 状态码      *                   

 msg  返回消息      * @param data       返回数据      */     private Result(ResultCode resultCode, T data) {         this(resultCode);         this.data = data;     }        /**      * 构造器,使用CodeMsg状态码与返回信息      * @param resultCode CodeMsg,参数如下:      *                   

 code 状态码      *                   

 msg  返回消息      */     private Result(ResultCode resultCode) {         this(resultCode.getCode(), resultCode.getMsg());     }   }

还需要定义几个常见的错误

@Builder
public class ResultCode implements Serializable {
     private static final long serialVersionUID = -6269841958947880397L;
     /** 状态码*/
    private int code;
     /**状态信息*/
    private String msg;
     /** 默认成功*/
    public final static ResultCode SUCCESS = dispose(ResultCodeEnum.SUCCESS);
    /**默认失败*/
   public final static ResultCode ERROR = dispose(ResultCodeEnum.ERROR);
    /**通用业务异常*/
    public final static ResultCode BIZ_ERROR = dispose(ResultCodeEnum.BIZ_ERROR);
    /**文件超出最大限制*/
    public final static ResultCode FILE_OUT_MAX = dispose(ResultCodeEnum.FILE_OUT_MAX);
    /**文件格式不正确*/
    public final static ResultCode FILE_FORMAT_ERROR = dispose(ResultCodeEnum.FILE_FORMAT_ERROR);
    /** 参数错误*/
    public final static ResultCode PARAM_ERROR = dispose(ResultCodeEnum.PARAM_ERROR);
    /**Json解析异常*/
    public final static ResultCode JSON_FORMAT_ERROR = dispose(ResultCodeEnum.JSON_FORMAT_ERROR);
    /** Sql解析异常*/
    public final static ResultCode SQL_ERROR = dispose(ResultCodeEnum.SQL_ERROR);
    /**网络超时*/
    public final static ResultCode NETWORK_TIMEOUT = dispose(ResultCodeEnum.NETWORK_TIMEOUT);
    /** 未知的接口*/
    public final static ResultCode UNKNOWN_INTERFACE = dispose(ResultCodeEnum.UNKNOWN_INTERFACE);
    /**请求方式不支持*/
    public final static ResultCode REQ_MODE_NOT_SUPPORTED = dispose(ResultCodeEnum.REQ_MODE_NOT_SUPPORTED);
    /**系统异常*/
    public final static ResultCode SYS_ERROR = dispose(ResultCodeEnum.SYS_ERROR);
    private static ResultCode dispose(ResultCodeEnum codeEnum) {
        return ResultCode.builder().code(codeEnum.getCode()).msg(codeEnum.getMsg()).build();
    }
     public ResultCode(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

声明:本文转载于:亿速云 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>