首页 > 其他分享 >RESTFUL 返回结果统一封装

RESTFUL 返回结果统一封装

时间:2022-10-15 14:45:23浏览次数:36  
标签:返回 code 封装 data msg return resultCode RESTFUL public

统一结果封装返回结果
**
 * 返回信息
 * @param <T>
 */
public class R<T> implements Serializable {

    /**
     * 状态码
     */
    private int code;

    /**
     * 是否成功
     */
    private boolean success;

    /**
     * 返回消息
     */
    private String msg;

    /**
     * 承载数据
     */
    private T data;

    public R() { }

    private R(IResultCode resultCode){
        this(resultCode, (T) null,resultCode.getMessage());
    }

    private R(IResultCode resultCode, T data) {
        this(resultCode, data, resultCode.getMessage());
    }

    private R(IResultCode resultCode, T data, String msg) {
        this(resultCode.getCode(), data, msg);
    }

    private R(int code,T data,String msg){
        this.code = code;
        this.data = data;
        this.msg = msg;
        this.success = ResultCode.SUCCESS.code == code;
    }


    public static <T> R<T> data(T data) {
        return data(data, "操作成功");
    }

    public static <T> R<T> data(T data, String msg) {
        return data(200, data, msg);
    }

    public static <T> R<T> data(int code, T data, String msg) {
        return new R(code, data, data == null ? "暂无承载数据" : msg);
    }

    public static <T> R<T> success(String msg) {
        return new R(ResultCode.SUCCESS, msg);
    }

    public static <T> R<T> success(IResultCode resultCode) {
        return new R(resultCode);
    }

    public static <T> R<T> success(IResultCode resultCode, String msg) {
        return new R(resultCode, msg);
    }

    public static <T> R<T> fail(String msg) {
        return new R(ResultCode.FAILURE, msg);
    }

    public static <T> R<T> fail(int code, String msg) {
        return new R(code, (Object)null, msg);
    }

    public static <T> R<T> fail(IResultCode resultCode) {
        return new R(resultCode);
    }

    public static <T> R<T> fail(IResultCode resultCode, String msg) {
        return new R(resultCode, msg);
    }

    public static <T> R<T> status(boolean flag) {
        return flag ? success("操作成功") : fail("操作失败");
    }

    public int getCode() { return code; }

    public void setCode(int code) { this.code = code; }

    public boolean isSuccess() { return success; }

    public void setSuccess(boolean success) { this.success = success; }

    public String getMsg() { return msg; }

    public void setMsg(String msg) { this.msg = msg; }

    public T getData() { return data; }

    public void setData(T data) { this.data = data; }
}
返回结果枚举
@Getter
@AllArgsConstructor
public enum  ResultCode implements IResultCode {
    /**
     * 操作成功
     */
    SUCCESS(200,"操作成功"),
    /**
     * 业务异常
     */
    FAILURE(400, "业务异常"),
    /**
     * 用户名或密码错误
     */
    ACCOUNT_OR_PASSWORD_INCORRECT(401, "用户名或密码错误"),
    /**
     * 用户未登录
     */
    NOT_LOGIN(401,"用户未登录或登录状态失效,请重新登录"),
    /**
     * 请求未授权
     */
    UN_AUTHORIZED(403, "请求未授权");
    /**
     * 状态码
     */
    final int code;
    /**
     * 返回消息
     */
    final String message;
}
返回枚举接口
public interface IResultCode extends Serializable {
    /**
     * 消息
     */
    String getMessage();
    /**
     * 状态码
     */
    int getCode();
}

标签:返回,code,封装,data,msg,return,resultCode,RESTFUL,public
From: https://www.cnblogs.com/ldy731729142/p/16794179.html

相关文章

  • js封装时间格式化
     /***方法*@description对Date的扩展,将Date转换为指定格式的String*月(M)、日(d)、小时(H)、分(m)、秒(s)、季度(q)可以用1~2个占位符,*年(y)可......
  • Python Flask 返回html文件
    1、在templates文件夹建立一个html文件<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>Index</title></head><body><h2>This is i......
  • thinkphp5.1全局验证层封装
    1.在很多场景下我们都要对表单提交的数据进行验证,那么如何实现一个验证的重复使用呢,那就让我们来封装一个全局的验证层吧!首先我们创建validate,如下图这样,我们文件夹下就出现......
  • pymysql封装
    1importpymysql2fromconfigs.global_dataimportMysql3frompymysql.cursorsimportDictCursor456classMysqlHandler:78def__i......
  • uni-app 4.7封装头像组件
    创建free-avart.vue文件<template><image:src="src"mode="widthFix":style="getStyle":class="type"></image></template><script>exportdefault{props:{......
  • uni-app 4.10封装聊天列表组件
    聊天组件free-media-list.vue,如下代码<template><viewhover-class="bg-light"><divclass="flexalign-stretch"><viewclass="flexalign-centerjustify-c......
  • uni-app 4.11封装全局mixin
    封装mixin(free-base.js)import$Timefrom"@/common/free-lib/time.js";exportdefault{filters:{formateTime(value){return$Time.gettime(value);}......
  • Flask 学习-90.Flask-RESTX 返回 HTML 内容
    前言Flask-RESTX框架默认返回的是application/json格式,使用render_template()返回html内容遇到了一些问题遇到的问题需要使用render_template()返回HTML内容fromfla......
  • RESTful API接口规范
    前后端接口规范-RESTful版本规范的三个目标:简洁、统一、开放。关于如何设计良好风格的RESTfulAPI,Github有一份满分答案,熟读三遍,其义自现。本规范将在其基础之上使......
  • Python 函数为什么会默认返回 None?
    Python有一项默认的做法,很多编程语言都没有——它的所有函数都会有一个返回值,不管你有没有写return语句。本文出自“​​Python为什么​​​”系列,在正式开始之前,我们就......