【Java】---- SpringBoot 统一数据返回格式

目录

  • 1. 统一数据返回格式介绍
  • 2. 实际应用
    • 2.1 添加前后的返回结果区别
    • 2.2 存在问题
  • 3. 统一数据返回格式的优点

1. 统一数据返回格式介绍

通过使用@ControllerAdvice和引用ResponseBodyAdvice接口来进行实现。
ResponseBodyAdvice这个接口里面有两个方法,分别是:

  • supports方法:判断是否要执行下面的beforeBodyWrite方法。true为执行,false不执行。通过该方法可以选择哪些类或哪些方法的response是否要进行统一返回格式处理。
  • beforeBodyWrite方法:对response方法进行具体的统一返回格式操作。
    在这里插入图片描述

2. 实际应用

2.1 添加前后的返回结果区别

下面实际应用和测试是基于图书管理系统下进行的,在结果类Result中:

package com.example.book.model;import com.example.book.enums.ResultStatus;
import lombok.Data;@Data
public class Result<T> {private ResultStatus code; //业务码:不是http状态码  200:成功,-2:失败, -1:未登录private String errMsg;// 错误信息,如果业务成功,errMsg为空private T data;public static <T> Result success(T data) {Result result = new Result<>();result.setCode(ResultStatus.SUCCESS);result.setData(data);return result;}public static Result nologin() {Result result = new Result<>();result.setCode(ResultStatus.NOLOGIN);result.setErrMsg("用户未登录");return result; //result.setData(null);}public static Result fail(String msg) {Result result = new Result<>();result.setCode(ResultStatus.FAIL);result.setErrMsg(msg);return result;}public static Result fail(ResultStatus resultStatus,String msg) {Result result = new Result<>();result.setCode(resultStatus);result.setErrMsg(msg);return result;}
}
  • 添加统一数据返回格式之前:
    在这里插入图片描述
  • 添加统一数据返回格式之后
    在这里插入图片描述

2.2 存在问题

  1. 一些方法返回的结果已经是Result类型,那就直接返回Result类型的结果即可
    在这里插入图片描述
  2. 测试多种不同的返回结果,当返回结果为String类型时会出现后端接口会返回结果显示,发送内部错误,当查看数据库的时候,发现数据操作成功。
    测试接口:
    在这里插入图片描述查看数据库时:
    在这里插入图片描述查看日志:
    在这里插入图片描述
  • 解决方法:
    使用springBoot内置提供的Jackson来实现信息的序列化

在这里插入图片描述

3. 统一数据返回格式的优点

  1. 有利于项目统一数据的维护和修改
  2. 方便前端更好的接收和解析后端接口返回的数据
  3. 统一了规范标准

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

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

相关文章

【专利 超音速】基于分类模型的轻量级工业图像关键点检测方法

申请号CN202311601629.7公开号&#xff08;公开&#xff09;CN117710683A申请日2023.11.27申请人&#xff08;公开&#xff09;超音速人工智能科技股份有限公司发明人&#xff08;公开&#xff09;张俊峰(总); 杨培文(总); 沈俊羽; 张小村 摘要 本发明涉及一种基于分类模型的…

外星人Alienware m16R1 原厂Windows11系统 oem系统

装后恢复到您开箱的体验界面&#xff0c;包括所有原机所有驱动AWCC、Mydell、office、mcafee等所有预装软件。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http://w…

VB.net实战(VSTO):Excel插件设计Ribbon界面

1. 新建Ribbon 1.1 开发环境 Visual Studio 2022 1.2 解决方案资源管理器中右击My Project 1.3 添加》新建项 1.4 office/SharePoint》功能区(可视化设计器)&#xff0c;双击 2.调出工具箱 Visual Studio 2022》视图》工具箱 3.设计界面 3.1 添加功能区选项卡 3.2拖动Group…

14-JavaScript中的点操作符与方括号操作符

JavaScript中的点操作符与方括号操作符&#xff1a;简单理解与应用 笔记分享 在JavaScript中&#xff0c;访问对象的属性有两种常见方式&#xff1a;点操作符&#xff08;.&#xff09;和方括号操作符&#xff08;[]&#xff09;。尽管它们在很多情况下可以互换使用&#xff0…

Android基础-Log管理

在Android系统中&#xff0c;log管理机制扮演着至关重要的角色&#xff0c;它为开发者提供了跟踪、调试和优化应用程序的强大工具。以下将详细阐述Android中的log管理机制&#xff0c;包括其架构、日志类型、系统框架、使用方式以及管理策略等方面。 一、Android Log管理机制概…

深度强化学习+大模型综述Survey on Large Language Model-Enhanced Reinforcement Learning

论文地址&#xff1a;[2404.00282] Survey on Large Language Model-Enhanced Reinforcement Learning: Concept, Taxonomy, and Methods (arxiv.org) 摘要 对 LLM 增强 RL 中现有文献进行了全面的回顾&#xff0c;并总结了其与传统 RL 方法相比的特征&#xff0c;旨在阐明未…

outlook邮件使用技巧

1. 设置自动回复功能 设置自动回复功能可以让您在无法处理邮件时自动向发件人发送一条回复&#xff0c;通知他们您的情况。以下是如何在Outlook中设置自动回复的步骤&#xff1a; 1. 打开Outlook&#xff0c;在顶部菜单栏中选择“文件”。 2. 在左侧菜单中选择“信息”&#…

混合A*算法详解(一)路径搜索

描述 为了学习一下混合A*算法&#xff0c;我前面介绍了车辆运动学及非完整约束、差速轮及阿克曼运动学模型、Dubins曲线和RS曲线&#xff0c;现在终于可以看一下混合A*算法的相关内容了。 原文名称&#xff1a;Practical Search Techniques in Path Planning for Autonomous D…

Mac解决command not found:mvn 保姆级

1.背景 mac电脑已经安装了jdk1.8。如果不清楚自己jdk安装位置的可以到idea查看。但是命令行执行 mvn 会报 command not found 2.解决方案 默认安装的 jdk 是没有配置环境变量&#xff0c;因此需要手动配置 通常如果是默认安装则路径都会一样直接复制即可&#xff0c;只需更…

图论第5天

127.单词接龙 需要cout看一下过程。 #include <iostream> #include <queue> #include <stack> #include <unordered_map> #include <unordered_set> #include <vector> using namespace ::std;class Solution { public:int ladderLength(…

Vue Router 4.x 如何隐式给路由传参params

Vue Router 官方说明文档的路由传参&#xff1a;https://router.vuejs.org/zh/guide/essentials/navigation.html 1、params 方式传参 此方式在4.0版本后就不能隐式的传参了&#xff0c;比如想在路由里加入username参数&#xff0c;则必须先在路由配置里&#xff0c;给你当前…

驱动开发之设备树语法

0.设备树由来 通过前面platform实验&#xff0c;使用platform总线&#xff0c;device与driver需要匹配才可以&#xff0c;device主要是存储一些硬件信息的&#xff0c;传递给driver使用。这样就会导致大量的硬件信息在linux内核源码里面&#xff0c;arch/arm/mach-xxx 和 arch…

undefined symbol: _ZN3c104impl8GPUTrace13gpu mmcv

这里写自定义目录标题 ImportError: //python3.8/site-packages/mmcv/_ext.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZN3c104impl8GPUTrace13gpuTraceStateEERROR conda.cli.main_run:execute(49): 这样的问题往往都是版本不匹配导致的 pytorch的版本&#xff0c;m…

【C++】类和对象1.0

本鼠浅浅介绍一些C类和对象的知识&#xff0c;希望能得到读者老爷们的垂阅&#xff01; 目录 1.面向过程和面向对象 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1.类的访问限定符 4.2.封装 5.C中struct和class的区别 6.类域 7.类的实例化 8.类对象模型 8.1.类…

线性代数|机器学习-P5特征值和特征向量

文章目录 1. 特征值和特征向量1.1 特征向量1.2 向量分解 2. 矩阵相似2.1 特征值求解法-相似2.2 特殊特征值2.3 反对称矩阵 3.对称矩阵 1. 特征值和特征向量 1.1 特征向量 假设有一个n行n列的方阵A&#xff0c;有 n 个不相同的特征值为 λ \lambda λ,特征向量为 x 1 , x 2 , …

(2022,扩散模型,评分函数,数据流形的内在维度,SVD)使用扩散模型估计数据流形的维度

Your diffusion model secretly knows the dimension of the data manifold 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 引言 2. 相关工作 3. 背景&#xff1a;基于评…

MySQL JDBC连接串中sslMode含义、与useSSL、requireSSL的关系

目录 引言版本SSL参数含义与默认值对应关系梳理详细含义-中英文对比sslModeuseSSLrequireSSLverifyServerCertificatetrustCertificateKeyStoreTypetrustCertificateKeyStoreUrltrustCertificateKeyStorePasswordfallbackToSystemKeyStoreclientCertificateKeyStoreTypeclientC…

【YOLOv5/v7改进系列】引入Slimneck-GSConv

一、导言 GSConv旨在平衡模型的准确度与速度&#xff0c;针对自动驾驶车辆中目标检测任务设计。从类脑研究中得到的直观理解是&#xff0c;具有更多神经元的模型能够获得更强的非线性表达能力。但是&#xff0c;不容忽视的是生物大脑处理信息的强大能力和低能耗远远超过计算机…

C#知识|封装典型的SQLServer数据库查询方法。

哈喽,你好啊,我是雷工! 前边学习封装了增删改的方法封装: 《C#知识|通用数据访问类SQLHelper的编写》; 本节继续学习将两种典型的查询方法封装成类。 下边为学习笔记。 01 封装单一返回结果的封装 在查看封装后的代码之前,可以先看下封装前代码的写法: 《C#知识|通过A…

C++ 20新特性之结构化绑定

&#x1f4a1; 如果想阅读最新的文章&#xff0c;或者有技术问题需要交流和沟通&#xff0c;可搜索并关注微信公众号“希望睿智”。 什么是结构化绑定 在C 20出现之前&#xff0c;当我们需要访问一个结构体或类的多个成员时&#xff0c;通常使用.或->操作符。对于复杂的数据…