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

news2024/9/21 1:35:03

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

第一步:新建立一个枚举类。枚举类的要求有两个变量,响应码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());
    }

测试结果如下:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年好用的10款图纸加密软件排行榜|图纸加密的最佳选择

随着企业对知识产权和数据安全需求的日益增加&#xff0c;图纸加密软件已经成为各行业保护敏感设计文档的关键工具。2024年&#xff0c;市场上涌现了多款优质的图纸加密软件&#xff0c;帮助企业有效防范数据泄露、维护信息安全。本文将为您介绍2024年好用的10款图纸加密软件&a…

入驻国际数字影像产业园有哪些优势?

在数字文创产业蓬勃发展的今天&#xff0c;选择入驻国际数字影像产业园&#xff0c;意味着您已踏上了一条通往行业前沿的快车道。这里&#xff0c;不仅是数字影像产业的聚集地&#xff0c;更是创新与梦想的孵化器。那么&#xff0c;入驻国际数字影像产业园究竟有哪些优势呢&…

vmware虚拟机 windows下查看进程id(pid)

在日常运维过程中, 发现宿主机cpu占用高, 经常要看是那一个虚拟机占用内存或cpu高. 但是在windows资源管理器中,所有的虚拟机都显示的是vmware-vmx.exe. 目前手动情况下就需要一个挨着一个去看. 有没有直接查看虚拟机进程id虚拟机运行目录的方法?? 实现步骤 1. 通过 vm…

【Python进阶】一篇文章教你如何使用PyCharm的调试功能?

要使用 PyCharm 的调试功能&#xff0c;可以按照以下步骤进行操作&#xff1a; 1、打开 PyCharm 启动 PyCharm&#xff0c;并打开你的 Python 项目。 2、设置断点 在你想要调试的代码行上&#xff0c;点击行号左侧的空白处&#xff0c;或者使用快捷键 Ctrl F8。这将在该行…

【C++ 高频面试题】指针和引用、关于内存泄漏和野指针问题

文章目录 1. 静态变量、全局变量、局部变量2. 指针和引用的区别3. 内存泄漏4. 野指针 1. 静态变量、全局变量、局部变量 ①局部变量&#xff1a; 作用范围&#xff1a;局部变量只在定义它的函数或代码块内有效&#xff0c;函数执行结束后&#xff0c;局部变量即失效。 生命周…

点亮第一盏LED灯,认识stm32最小系统板

嵌入式初学者&#xff0c;直接上手stm32开发&#xff0c;首先就是买块stm32开发板&#xff0c;选择最基础的系列&#xff0c;F103C8t6&#xff0c;先不管里面的数字代表什么意思&#xff0c;先弄明白F103代表什么意思&#xff0c;F103表示F1系列里的03子系列&#xff0c;OK&…

Http中get与post的区别,99%的人都理解错了吧

Get和Post是HTTP请求的两种基本方法&#xff0c;要说它们的区别&#xff0c;接触过WEB开发的人都能说出一二。 最直观的区别就是Get把参数包含在URL中&#xff0c;Post通过request body传递参数。 你可能自己写过无数个Get和Post请求&#xff0c;或者已经看过很多权威网站总结…

ICMAN触摸感应芯片方案

ICMAN触摸感应芯片 ICMAN触摸感应芯片采用先进的电容感应技术&#xff0c;能够精确检测和识别触摸动作。这一技术通过感应人体与传感器之间的微小电容变化来实现触控功能。相比传统的电阻式触控技术&#xff0c;电容感应技术具有更高的灵敏度和响应速度&#xff0c;能够提供更…

智能交通(四)——CMC特刊推荐

特刊征稿 01 期刊名称&#xff1a; Advanced Trends in Vehicular Ad hoc Networks (VANETs) 截止时间&#xff1a; 提交截止日期:2025年5月31日 目标及范围&#xff1a; 涵盖但不限于以下关键领域的提交&#xff1a; - 下一代 V2X 通信&#xff1a; 本主题探讨了如何将…

预防式编程——避免空值

文章目录 1. 输入验证2. 使用可选类型&#xff08;Optional Types&#xff09;3. 非空断言4. 安全调用运算符5. 提供默认值6. 设计模式7. 文档说明8. 数据结构的选择9. 逻辑判断10. 构造函数和初始化11. 使用工具类12. 枚举类型13. 编码规范14. 测试15. 重构16. 教育与培训 案例…

【js】将串口数据翻译为字符串-含源码

一、背景 通过串口工具获取到的以十六进制表示的字符串数据&#xff0c;按照ascii码转换为字符串。 二、分析 输入应为十六进制的以单个字节为单位的字节与字节之间以空格间隔的字符串。 输出应为完整连续的字符串。 三、实现 3.1按照空格拆解输入字符串为字符数组 var i…

vscode 高效率开发手册

vscode 高效率开发手册 2023.11.17 colin v1.0 文章目录 vscode 高效率开发手册一、统一代码风格二、自定义代码片段三、熟记`vscode`快捷键四、一些有用的系统设置1、焦点变更自动保存2、删除文件中的每行末尾的空格五、一些有用的、高效率插件安装方式:1、自行联网安装;2、…

原生 input 中的 “type=file“ 上传文件

目标&#xff1a;实现文件上传功能 原型图&#xff1a; HTML部分&#xff1a; <div class"invoice-item"><div class"invoice-title">增值税专用发票</div><div class"invoice-box"><el-form-item label"标准…

信息化和精益化应当先做哪个?天行健王春城老师回答你

随着科技的飞速发展&#xff0c;企业面临着来自内部和外部的双重压力。在这样的背景下&#xff0c;信息化和精益化成为了企业提升竞争力的两个重要方向。那么&#xff0c;面对这两个重要的战略方向&#xff0c;企业应该先从哪里入手呢&#xff1f;下面天行健王春城老师就此展开…

(九)Mysql之 【MySQL MHA】

前置资源 一、什么是 MHA MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切换的…

洁净区在线环境粒子浮游菌监测取样点的选择知多少?

洁净环境在线监测系统的参考法规标准包括国内外GMP标准、国家标准、国际标准以及洁净室设计和施工规范等。企业应根据自身生产需求和法规要求&#xff0c;选择合适的监测系统和监测方案&#xff0c;确保洁净环境的有效控制和产品质量的安全可靠。 【北京中邦兴业洁净环境在线监…

如何在YoloV8中添加注意力机制(两种方式)

文章目录 概要添加注意力机制流程#添加方式一&#xff1a;将注意力机制添加到额外的一层添加方式二&#xff1a;将注意力机制添加到其中一层&#xff0c;不引入额外的层 概要 提示&#xff1a;这里可以添加技术概要 例如&#xff1a; openAI 的 GPT 大模型的发展历程。 添加…

堡垒机的部署方式与防火墙有何不同

在现代网络安全架构中&#xff0c;堡垒机是关键的安全设备之一&#xff0c;它用于管理和控制服务器的访问权限&#xff0c;保障内部网络的安全性。越来越多的企业选择堡垒机来增强网络安全管理。那么堡垒机该如何部署呢?同时&#xff0c;堡垒机与防火墙有何区别?本文将带您深…

sql中索引查看是否生效

在pg数据库中有多种索引存在&#xff0c;在一般情况下我们取使用普通索引 以下是一些常见导致索引未命中的原因和优化策略 1.如果查询中的条件与索引字段的顺序不匹配&#xff0c;或者索引字段没有完全包含在查询条件中&#xff0c;索引可能不会被使用。 2.在查询中使用函数…

OpenAI 草莓模型即将发布,人工智能变革在即

近日&#xff0c;人工智能领域的领军者 OpenAI 即将推出的 “草莓”&#xff08;Strawberry&#xff09;模型引发了广泛关注和热议。据可靠消息&#xff0c;该模型计划在未来两周内作为 ChatGPT 服务的一部分正式发布。 “草莓” 模型作为 OpenAI 盛传已久的神秘项目&#xff…