欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

从零搭建 Spring Boot 后端框架开发

程序员文章站 2022-06-19 10:04:29
简介这一小节主要是为了,统一请求结果格式步骤在提倡前后端分离的当下,统一返回结果就显得尤其重要,在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 */...

简介

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

步骤

  • 在提倡前后端分离的当下,统一返回结果就显得尤其重要,在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