当前位置: 移动技术网 > IT编程>开发语言>Java > 从零搭建 Spring Boot 后端项目(六)

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

2020年07月21日  | 移动技术网IT编程  | 我要评论

简介

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

步骤

  • 在提倡前后端分离的当下,统一返回结果就显得尤其重要,在com.example.backend_template.utils下新增ResultData类
    package com.example.backend_template.utils;
    
    /**
     * @ClassName ResultData 封装结果集成统一的json样式
     * @Description TODO
     * @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 TODO
     * @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 TODO
     * @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://blog.csdn.net/qq_22136439/article/details/107466974

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网