第十五节:学习Springboot 的响应结果封装(自学Spring boot 3.x的第四天)

这节记录下如何使用枚举类和响应封装类实现响应结果封装。

第一步:新建立一个枚举类。枚举类的要求有两个变量,响应码code,响应信息desc。响应码需要跟前端约定好。

public enum ResponseCode {
    SUCCESS("success",101),
    ERROR("error",102),
    ILLEGAL_ARGUMENT("illegal_argument",103);
    private final int code;
    private final String desc;
    ResponseCode(String desc, int code){
        this.desc = desc;
        this.code = code;
    }

    public int getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

}

第二步:新建一个泛型类

package cn.wcyf.wcai.common;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import java.io.Serializable;

/**
 * created by mero on 2018/3/13.<br>
 */
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class ResponseObject<T> implements Serializable{
    private Integer code;
    private String msg;
    private T data;

    private ResponseObject(int code){
        this.code  = code;
    }
    private ResponseObject(int code, String msg){
        this.code = code;
        this.msg = msg;
    }
    private ResponseObject(int code, String msg, T data){
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
    private ResponseObject(int code, T data){
        this.code = code;
        this.data  = data;
    }

    public void setStatus(int code){
        this.code = code;
    }
    public int getStatus(){
        return code;
    }

    public void setMsg(String msg){
        this.msg = msg;
    }

    public String getMsg(){
        return msg;
    }

    public void setData(T data){
        this.data = data;
    }

    public T getData(){
        return data;
    }

    public static <T> ResponseObject<T> createSuccessfulResp(){
        return  new ResponseObject<T>(ResponseCode.SUCCESS.getCode());
    }

    private static  <T> ResponseObject<T> createSuccessfulResp(String msg){
        return new ResponseObject<T>(ResponseCode.SUCCESS.getCode(),msg);
    }

    public static  <T> ResponseObject<T> createSuccessfulResp(String msg,T data){
        return new ResponseObject<T>(ResponseCode.SUCCESS.getCode(),msg,data);
    }
    public static  <T> ResponseObject<T> createSuccessfulResp(T data){
        return new ResponseObject<T>(ResponseCode.SUCCESS.getCode(),data);
    }
    public <T> ResponseObject<T> createErrorResp(){
        return new ResponseObject<T>(ResponseCode.ERROR.getCode(),ResponseCode.ERROR.getDesc());
    }
    public static  <T> ResponseObject<T> createErrorResp(String msg){
        return new ResponseObject<T>(ResponseCode.ERROR.getCode(),msg);
    }
    public static  <T> ResponseObject<T> createErrorResp(int code,String desc){
        return  new ResponseObject<T>(code,desc);
    }

    public static <T> ResponseObject<T> createDescAndCodeResp(String desc,int code){
        return new ResponseObject<T>(code,desc);
    }
    @JsonIgnore
    public boolean isSuccess(){
        return  this.code == ResponseCode.SUCCESS.getCode();
    }

}

第三步:测试

在controller中编写一个函数测试

 /**
     * 通过id查询指定学生信息
     * @param id
     * @return
     */

    @GetMapping("/{id}")
    public ResponseObject<Student> getById(@PathVariable Integer id){
        if(id==10||id==11){
            return ResponseObject.createSuccessfulResp(ResponseCode.SUCCESS.getDesc(),studentService.getById(id));
        }
       return ResponseObject.createErrorResp(ResponseCode.ERROR.getCode(),ResponseCode.ERROR.getDesc());
    }

测试结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/874497.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaWeb后端开发总结(3)

AOP基础 AOP概述 首先我们要知道AOP是什么&#xff1f; 看下图 个人解析&#xff1a; AOP叫做面向切面编程&#xff0c;但是实际上就是面向方法编程 图中下面一部分是一个AOP的案例 AOP快速入门案例代码实现 案例&#xff1a;测出业务中各个业务方法所需的执行时间 如果…

某red书最新版x-s、x-s-common(下)

本文继续某red书参数逆向&#xff0c;接下来是x-s-common&#xff0c;x-s的逆向过程请转战某red书最新版x-s、x-s-common&#xff08;上&#xff09; x-s-common就比较好找了&#xff0c;直接搜索就可以了 成功断住&#xff1a; 这里要注意了&#xff0c;断点是断在第二个x-s…

线性代数 第六讲 特征值和特征向量_相似对角化_实对称矩阵_重点题型总结详细解析

文章目录 1.特征值和特征向量1.1 特征值和特征向量的定义1.2 特征值和特征向量的求法1.3 特征值特征向量的主要结论 2.相似2.1 相似的定义2.2 相似的性质2.3 相似的结论 3.相似对角化4.实对称矩阵4.1 实对称矩阵的基本性质4.2 施密特正交化 5.重难点题型总结5.1 判断矩阵能否相…

QT——事件处理机制(9.10)

用C写个闹钟 要求一个标签类显示时间&#xff0c;一个行编辑类输入闹钟时间&#xff0c;两个按钮组件分别控制启动和取消。 1.头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer> //定时器类 #include <QTime…

数据集 CrowdPose 多人姿态估计 深度学习 >> DataBall

数据集 CrowdPose 多人姿态估计 深度学习 CrowdPose 数据集 这是一个用于探讨在拥挤场景中的多人姿态估计的图像数据集。该数据集包括 2 万张图像和标注有 14 个关键点的 8 万个人体姿势&#xff0c;其中测试集包括 8,000 张图像。 article{li2018crowdpose, title{CrowdPose…

新闻资讯类APP流量变现技巧——提升广告变现收益

新闻资讯类APP拥有庞大的用户基础&#xff0c;始终拥有较强的广告变现能力&#xff0c;如何在激烈的行业竞争中凸显媒体的优势&#xff0c;进而吸引更多的广告主&#xff1f;优化核心场景广告样式的同时&#xff0c;挖掘更多的广告场景样式&#xff1f;如何把握好广告变现和用户…

Whistle 客户端抓包工具

Whistle 客户端 安装或更新 官网&#xff1a; 关于whistle GitBook (wproxy.org)https://wproxy.org/whistle/ Whistle 客户端目前只支持 Mac 和 Windows 系统&#xff0c;如果需要在 Linux、 Docker、服务端等其它环境使用&#xff0c;可以用命令行版本&#xff1a;GitHub…

JAVA- 多线程

一&#xff0c;多线程的概念 1.并行与并发 并行&#xff1a;多个任务在同一时刻在cpu 上同时执行并发&#xff1a;多个任务在同一时刻在cpu 上交替执行 2.进程与线程 进程&#xff1a;就是操作系统中正在运行的一个应用程序。所以进程也就是“正在进行的程序”。&#xff0…

【动态规划】子序列问题二(数组中不连续的一段)

子序列问题二 1.最长定差子序列2.最长的斐波那契子序列的长度3.最长等差数列4.等差数列划分 II - 子序列 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&am…

如何提取 R 语言内置数据集和著名 R 包的数据集

大家好&#xff0c;今天我们来聊一聊在 R 语言中如何提取内置数据集&#xff0c;以及如何使用著名 R 包中的数据集。相信很多同学在学习 R 语言时&#xff0c;都会遇到需要用数据集来做练习或者分析的情况。在 R 里&#xff0c;数据集资源非常丰富&#xff0c;R 本身自带了许多…

跨部门SOP与统一知识库:打破信息孤岛,促进团队协作

引言&#xff1a; 在当今这个快速变化且高度竞争的商业环境中&#xff0c;企业面临着前所未有的挑战&#xff0c;其中之一便是如何高效地跨越部门界限&#xff0c;实现无缝协作。传统的组织结构往往导致信息孤岛的出现&#xff0c;不同部门间流程不一致、信息不共享&#xff0…

shader 案例学习笔记之step函数

step函数 step(edge,x)&#xff1a;当x>edge时返回1&#xff0c;否则返回0 #ifdef GL_ES precision mediump float; #endifuniform vec2 u_resolution;void main(){vec2 st gl_FragCoord.xy/u_resolution.xy;float f step(0.5, st.x);gl_FragColor vec4(f, 0, 0, 1.0); …

yolo训练出现Could not load library libcudnn_cnn_train.so.8问题及解决方法

问题场景&#xff1a; 训练yolov5或者yolov8时候会报错&#xff1a; Could not load library libcudnn_cnn_train.so.8. Error: /usr/local/cuda-12.1/lib64/libcudnn_cnn_train.so.8: uined symbol: _ZN5cudnn3cnn34layerNormFwd_execute_internal_implERKNS_7backend11Vari…

web前端-HTML常用标签(三)

一、表格标签 表格是实际开发中非常常用的标签: 1.表格的主要作用&#xff1a; 表格主要用于显示、展示数据&#xff0c;因为它可以让数据显示的非常的规整&#xff0c;可读性非常好。特别是后台展示数据的时候&#xff0c;能够熟练运用表格就显得很重要。一个清爽简约的表格…

火柴人跑酷

运行图片&#xff1a; 这里面有三个boss&#xff0c;和各种元素属性列举一下&#xff1a; 元素作用 火 运用火元素将攻击抵消 水 和火元素一致 磁 自动吸取经验…

MySQL数据表操作

目录 常用数据类型 数值类型 整型 浮点型 字符串类型 日期类型 数据表的操作 查看表结构 创建表 约束 删除表 修改表 添加列 删除列 修改列的定义 重命名列 重命名表 总结 在学习了数据库操作之后&#xff0c;我们接着来看数据表的相关操作 我们首先来学习 …

农产品管理与推荐系统Python+Django网页界面+计算机毕设项目+推荐算法

一、介绍 农产品管理与推荐系统。本系统使用Python作为主要开发语言&#xff0c;前端使用HTML&#xff0c;CSS&#xff0c;BootStrap等技术和框架搭建前端界面&#xff0c;后端使用Django框架处理应用请求&#xff0c;使用Ajax等技术实现前后端的数据通信。实现了一个综合性的…

乡村旅游指标-最美乡村数、旅游示范县数、旅行社数、景区数、农家乐数2007-2021年

2007-2021年乡村旅游指标-最美乡村数、旅游示范县数、旅行社数、景区数、农家乐数.zip资源-CSDN文库https://download.csdn.net/download/2401_84585615/89504677 本文分析的数据集涵盖了中国31个省区市的乡村旅游相关指标&#xff0c;包括从业人数、美丽乡村数量、乡村旅游示…

MPLAB V8.92烧写hex

打开hex文件 File\Import … *.hex文件2. 选择烧录器 Programmer\Select programmer -PICKit3/MPLAB ICD2 3.烧录程序 Programmer\program

ES6标准---【三】【学习ES6看这一篇就够了!!!】

目录 ES6以往文章 ES6之前函数默认值参数的处理方法 ES6函数参数的默认值 与结构赋值默认值结合使用 参数默认值的位置&#xff1a; 函数的length属性 作用域 参数的默认值是一个函数 正确理解函数默认值的例子 应用 指定某一个函数参数不得省略&#xff0c;如果省略…