SpringBoot2.x系列教程05-springboot统一响应格式、全局异常处理

本文介绍了在前后端分离的背景下,SpringBoot2.x如何实现统一的响应格式和全局异常处理。包括设计统一响应类、使用枚举类封装响应码、实现全局响应包装处理、自定义APIException以及通过GlobalException进行全局异常处理。此外,还涵盖了controller测试路由的相关内容。
摘要由CSDN通过智能技术生成

在前后端分离的大趋势下, 服务端如何制定一套行至有效的规则供前端开发使用,显得尤为的重要,既然是前后端分离,那么服务端的架构设计必须满足下面的几个点:首先响应的格式必须统一,其次针对异常能够做到全局响应。下面将针对这个目标来展开讲解。

统一响应类的设计

要想实现针对前端的统一格式响应,就必然需要将最终的结果包装到制定的响应类里,一个好的统一响应类的设计需要具备下面的几个要素:第一包含响应的编码;第二包含响应的信息;第三包含响应的数据;第四设计到的相关的响应码全部以枚举类的形式包含在一个枚举类中

1、枚举类

public enum ResponseCode {
    SUCCESS(1000, "操作成功"),
    FAILED(1001, "接口错误"),
    VALIDATE_FAILED(1002, "参数校验失败"),

    REQUEST_PATH_ERROR(404, "请求资源路径错误"),
    ERROR(500, "服务器异常,请稍后重试"),

    USER_NOT_EXIST(2000,"用户不存在"),
    USER_LOGIN_FAIL(2001,"用户名或密码错误"),
    USER_NOT_LOGIN(2002,"用户还未登录,请先登录"),
    NO_PERMISSION(2003,"权限不足,请联系管理员");

    private static Map<Integer, String> map = new HashMap<Integer, String>();

    static {
        for (ResponseCode r : ResponseCode.values()) {
            map.put(r.getCode(), r.getMessage());
        }
    }

    private int code;

    private String message;

    ResponseCode(int code, String message){
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    /**通过code获取message**/
    public String getResponseMessageByCode(int code) {
        return map.get(code);
    }
}

2、统一响应类

/**全局统一响应类定义**/
public class CommonResponse<T> {

    private int code;

    private String msg;

    private T data;

    public CommonResponse(){}

    public CommonResponse(T data) {
        this(ResponseCode.SUCCESS, data);
    }

    /**枚举类作为构造参数**/
    public CommonResponse(ResponseCode responseCode, T data) {
        this.code = responseCode.getCode();
        this.msg = responseCode.getMessage();
        this.data = data;
    }

    public int getCode() {
        return code;
    }

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

    public String getMsg() {
        return msg;
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值