SpringBoot统一标准响应格式及异常处理

SpringBoot统一标准响应格式及异常处理

一.概述
在开发SpringBoot后端服务时,一般需要给前端统一的响应格式及异常处理,方便前端调试及配置错误提示等。
比如:自定义Response结构,若每个开发者封装各自的Response结构,造成不一致,不利于前端处理,
因此我们需要将响应格式统一起来,定义一个统一的标准响应格式。
二.统一响应
2.1 定义响应标准格式

一般至少如下三点:

  1. code:响应状态码,由后端统一定义
  2. message:响应的消息;
  3. data:响应返回数据。

例如:

{
    "code": "500",
    "message": "该用户已存在",
    "data": null
}
2.2、定义统一响应对象
/**
 * @Description: TODO:定义一统一的响应对象类
 * @Author: 
 * @CreateDate: 
 * @Version: V1.0
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "定义一统一的响应对象")
public class ResultVO<T> implements Serializable {
    private static final long serialVersionUID = -2548645345465031121L;
    @ApiModelProperty(value = "响应状态码")
    private Integer code;
    @ApiModelProperty(value = "响应的消息")
    private String message;
    @ApiModelProperty(value = "响应返回数据")
    private T data;
    
	private ResultVO (AppHttpCodeEnum resultStatus, T data) {
        this.code = resultStatus.getCode();
        this.message= resultStatus.getMsg();
        this.data = data;
    }

    /**
     * 功能描述:响应成功返回结果
     */
    public static <T> ResultVO success(T data){
        ResultVO resultVO = new ResultVO(
			AppHttpCodeEnum.SUCCESS.getCode(),
			AppHttpCodeEnum.SUCCESS.getMessage(),
			data
		);
        return resultVO;
    }
    /**
     * 功能描述:定义统一返回数据并自定义message消息
     */
    public static <T> ResultVO success(String message,T data){
        ResultVO resultVO = new ResultVO(
                AppHttpCodeEnum.SUCCESS.getCode(),
                message,data);
        return resultVO;
    }
    
    /**
     * 功能描述:抛出异常 返回错误信息
     * 默认失败返回
     */
    public static <T> ResultVO<T> fail() {
        return new ResultVO<T>(
                AppHttpCodeEnum.FAIL.getCode(),
                AppHttpCodeEnum.FAIL.getMessage(),
                null);
    }
     public static <T> ResultVO<T> fail(Interger code, String message ) {
        return new ResultVO<T>(code,message, null);
    }
}
2.3、定义响应状态码
@Getter
@AllArgsConstructor
public enum  AppHttpCodeEnum {

    SUCCESS(200, "操作成功"),
    FAIL(500,"操作失败"),
	
    BIZ_ERROR(1000, "通用业务异常"),
    FILE_OUT_MAX(9000, "文件超出最大限制"),
    FILE_FORMAT_ERROR(9001, "文件格式不正确"),
    PARAM_ERROR(9050, "参数错误"),
    JSON_FORMAT_ERROR(9051, "Json解析异常"),
    SQL_ERROR(9052, "Sql解析异常"),
    NETWORK_TIMEOUT(9510, "网络超时"),
    UNKNOWN_INTERFACE(9520, "未知的接口"),
    REQ_MODE_NOT_SUPPORTED(9530, "请求方式不支持"),
    SYS_ERROR(9999, "系统异常");
    NO_LOGIN(401, "未登录"),
    UNAUTHORIZED(),
    USERNAME_EXIST(501, "用户名已存在");

    private Integer code;  //响应状态码
    private String message;   //响应的消息

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值