从零搭建 Spring Boot 后端项目(六)

简介

这一小节主要是为了,统一请求结果格式

步骤
  • 在提倡前后端分离的当下,统一返回结果就显得尤其重要,在com.example.backend_template.utils下新增ResultData类
    package com.example.backend_template.utils;
    
    /**
     * @ClassName ResultData 封装结果集成统一的json样式
     * @Description 
     * @Author L
     * @Date Create by 2020/7/2
     */
    public class ResultData<T> {
        // 信息状态码
        private Integer code;
        // 提示信息
        private String msg;
        // 返回的数据
        private T Data;
    
        public Integer getCode() {
            return code;
        }
    
        public void setCode(Integer code) {
            this.code = code;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        public T getData() {
            return Data;
        }
    
        public void setData(T data) {
            Data = data;
        }
    }
    
  • 为了防止重复创建ResultData,set()值产生大量的重复代码,这里封装一个工具类,用于封装常用返回数据在com.example.backend_template.utils下新建ResultUtils类
    package com.example.backend_template.utils;
    
    /**
     * @ClassName ResultUtils
     * @Description 
     * @Author L
     * @Date Create by 2020/7/2
     */
    public class ResultUtils {
        // 统一结果集对象
        private static ResultData<Object> resultData = new ResultData<>();
    
        /**
         * 成功时调用的函数
         *
         * @param object 要返回的对象
         * @return
         */
        public static ResultData<Object> success(Object object) {
            resultData.setCode(0);
            resultData.setMsg("success");
            resultData.setData(object);
            return resultData;
        }
    
        /**
         * 成功时,如果没有要返回的对象,调用此方法
         *
         * @return
         */
        public static ResultData<Object> success() {
            return success(null);
        }
    
        /**
         * 失败时调用的函数
         *
         * @param code 要返回的状态码
         * @param msg  要返回的信息
         * @return
         */
        public static ResultData<Object> fail(Integer code, String msg) {
            resultData.setCode(code);
            resultData.setMsg(msg);
            return resultData;
        }
    
        /**
         * 失败时调用的函数
         *
         * @param code   要返回的状态码
         * @param msg    要返回的信息
         * @param object 要返回的具体错误信息
         * @return
         */
        public static ResultData<Object> fail(Integer code, String msg, Object object) {
            resultData.setCode(code);
            resultData.setMsg(msg);
            resultData.setData(object);
            return resultData;
        }
    }
    
  • 定义常见的响应码枚举,可根据业务需求自行添加,在com.example.backend_template.constant下新建ResultCode类
    package com.example.backend_template.constant;
    
    /**
     * @Description 
     * @Author L
     * @Date Create by 2020/7/2
     */
    public enum ResultCode {
        // 成功
        SUCCESS(200),
        // 失败
        FAIL(400),
        // 未认证(签名错误)
        UNAUTHORIZED(401),
        // 接口不存在
        NOT_FOUND(404),
        // 服务器内部错误
        INTERNAL_SERVER_ERROR(500);
    
        private int code;
    
        ResultCode(int code) {
            this.code = code;
        }
    
        public int getCode() {
            return code;
        }
    
        public void setCode(int code) {
            this.code = code;
        }
    }
    

注:这里统一的返回结果,只能保证我们没有抛出异常的情况,统一返回结果,但是程序抛出异常后,返回结果将不再统一,此时我们需要全局异常处理,再统一返回数据,下面会写到

测试

这里可以把controller返回的数据放到ResultData<T>类的data下返回,之后会有演示,这里就不测试了

项目地址

项目介绍:从零搭建 Spring Boot 后端项目
代码地址:https://github.com/xiaoxiamo/backend-template

下一篇

七、代码自动生成

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小夏陌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值