Spring Boot JAVA 统一返回的信息

news2024/11/28 0:35:20

现在的项目是前后端开发的居多,那么,后端的开发只需要返回相关的接口就行了。那么,我们怎么定义接口返回的数据,怎么使用 Spring Boot 来统一处理返回的信息呢?

开发环境如下:

  • IntelliJ IDEA 2021.2.2 (Ultimate Edition)
  • macOS Monterey - Apple M1
  • Java version - 17.0.7
  • Spring Boot - 3.1.0

定义返回的信息格式

一个合理的信息返回格式,至少包含下面三个字段:

{
  "code": "0",
  "message": "请求成功",
  "data": {
    "name": "Jimmy"
  }
  ""
}

code 表示返回的状态,我们这个可以自行定义,10000 代表成功; 20000 代表某某等;message 表示接口返回的信息,是否成功了,失败的理由是什么等;data 是表示请求成功后,返回的数据,可以是数组也可以是对象等。

信息返回格式,是否应该有其他字段,按照需求调整。

实践

我们使用 Spring Boot 来实践一下,通过 IDEA 新建一个名为 jimmy-response 的项目:

添加 lombok

Lombok 是一个插件,其主要的用途是提供了简单注释的形式来帮助我们简化消除一些必须有但是显得很臃肿的 java 代码,提高编码效率,使代码更加简洁。

pom.xml 中添加依赖:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

如果并没有自动安装。点击 pom.xml 文件右上角同步图案即可。

定义返回的对象

我们在 ResultData.java 中定义返回的类:

// ResultData.java
package com.example.jimmyresponse;

import lombok.Data;

@Data
public class ResultData<T> {
    private String code;
    private String message;
    private T data;
    // 扩展字段,比如接口请求时间
    private long accessTimestamp;

    // 构造函数
    public ResultData() {
        this.accessTimestamp = System.currentTimeMillis();
    }

    // 成功返回
    public static <T> ResultData<T> success(T data) {
        ResultData<T> resultData = new ResultData<>();
        resultData.setCode("10000");
        resultData.setMessage(("请求成功!"));
        resultData.setData(data);
        return resultData;
    }

    // 失败返回
    public static <T> ResultData<T> fail(String code, String message) {
        ResultData<T> resultData = new ResultData<>();
        resultData.setCode(code);
        resultData.setMessage(message);
        return resultData;
    }
}

模拟数据

我们定义一个类来模拟用户的数据:

package com.example.jimmyresponse;

public class User {
    public String name;

    public User(String name) {
        this.name = name; // 用户名
    }
}

调用

最后,我们调用定义好的返回对象:

// ApiControll.java
package com.example.jimmyresponse;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ApiController<T> {

    @GetMapping("/")
    public T getList() {
        // 模拟用户数据
        User users[] = {
                new User("Jimmy"),
                new User("Ivy")
        };
        return (T) ResultData.success(users); // 信息成功返回
    }
}

结果的如下:

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

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

相关文章

linuxOPS基础_linux权限管理

权限概述 什么是权限 ​ 在多用户计算机系统的管理中&#xff0c;权限是指某个特定的用户具有特定的系统资源使用权利。 在Linux 中分别有读、写、执行权限 \权限针对文件权限针对目录读r(read)表示可以查看文件内容&#xff1b;cat、less…表示可以(ls)查看目录中存在的文…

无人机+ AI 图像分析:里斯本大学高效检测林业害虫

内容一览&#xff1a;早期发现虫害对于因地制宜采取防控措施至关重要。尽管遥感技术可用于快速扫描大面积区域&#xff0c;但面对低强度信号或难以检测的物体&#xff0c;其效果并不尽如人意。因此&#xff0c;里斯本大学研究人员将无人机与 AI 图像分析相结合&#xff0c;在此…

如何对自动化测试工具选型?这4个因素必须要拿捏好

测试开发工程师再做自动化时避免不了针对每个工具进行选型。今天就来看下工具选型的方法。 一&#xff1a;工具选型方法 在作为一名自动化测试开发工程师时&#xff0c;选择合适的 Web 自动化工具非常关键。以下是一些评估和选择工具的依据和方法&#xff1a; 1.支持的语言和…

接口测试介绍以及用例编写

6.1 接口 6.1.1 接口概述 定义&#xff1a; 接口就是API&#xff08;Application Programming Interface&#xff0c;应用程序接口&#xff09;&#xff0c;是一个软件或服务对外提供的接口&#xff0c;别人只要调用这接口&#xff0c;而内部如何实现&#xff0c;不需要关心。…

608教室使用方法

一、教室平面图 608教室的布局如下&#xff0c;重要的设备已经在图中标出。总开关、一体机和机柜。   二、使用方法 2.1 房间机器上电 进门后首先走到“总开关位置”&#xff0c;将电匝闭合。 原来的开关如图所示&#xff0c;有3组开关&#xff0c;1号组开关用于控制插座、…

突破办公瓶颈,推荐5款电脑办公软件

1.AnyTXT AnyTXT是一款搜文件内容的第三方全文搜索工具&#xff0c;速度极快&#xff0c;基本秒出结果。而且右边可以直接预览文件&#xff0c;筛选&#xff0c;复制&#xff0c;翻译等功能丰富&#xff0c;完美替代自带的搜索。 2.Groupy 这是用于快速切换窗口的小型精致工…

微信支付_Native支付流程

介绍 商户后台系统先调用微信支付的Native下单接口&#xff0c;微信后台系统返回链接参数code_url&#xff0c;商户后台系统将code_url值生成二维码图片&#xff0c;用户使用微信客户端扫码后发起支付。微信支付-开发者文档 注意&#xff1a; code_url有效期为2小时&#xff0…

spring实例化bean整体流程

AbstractApplicationContext类的invokeBeanFactoryPostProcessors方法把所有bean变成了beanDefinition&#xff0c;然后在finishBeanFactoryInitialization方法中完成实例化。 实例化过程只分析单例 1.DefaultListableBeanFactory#preInstantiateSingletons方法 这个方法的功…

养元发起“爱心送考车”全国行动,慈善榜样如何炼成?

入夏不久&#xff0c;六个核桃的经销商们&#xff0c;开始忙起来了。 正值一年一度的高考季&#xff0c;随着越来越多的学子感受到人生重要时刻的期待、激动与紧张&#xff0c;这种氛围也开始牵动社会的心。高考前夕&#xff0c;六个核桃联合全国经销商发起“爱心送考车”公益…

【JavaEE】HTTPS加密原理

HTTPS加密原理✿✿ヽ(▽)ノ✿ 文章目录 JavaEE & HTTPS加密原理1. 为什么要加密2. HTTPS加密原理2.1 初始想法2.2 引入非对称加密2.3 中间人攻击2.4 引入证书 JavaEE & HTTPS加密原理 1. 为什么要加密 例子&#xff1a;&#xff08;运营商劫持&#xff09; 你可能经常…

亚马逊云科技基于智能搜索,为企业打造知识库

知识库需求在各行各业中普遍存在&#xff0c;例如制造业中历史故障知识库、游戏社区平台的内容知识库、电商的商品推荐知识库和医疗健康领域的挂号推荐知识库系统等。亚马逊云科技为保证推荐系统的时效性和准确性&#xff0c;需要大量的数据/算法/软件工程师的人力投入和包括硬…

Threejs 快速入门

最小环境 首先&#xff0c;在正式学习Threejs前&#xff0c;有几个概念需要说明的。Threejs在底层其实还是调用html5中的canvas api来实现绘图的。但和我们一般绘制2D图像不同&#xff0c;Threejs在底层使用的是canvas的webgl context来实现3D绘图。webgl context本身更多是直…

如何向gitee开源项目提交代码

文章目录 前言登录账号fork项目fork完成拉去代码check out出分支开发提交代码到自己的远程仓库创建pull requestcreate pull request 前言 如何向开 源 项 目 提交自己的代码呢&#xff1f;相信很多小伙伴都会看到比较不错的开源项目&#xff0c;然后想在此基础上实现自己的代…

读财报丨Q1保费环比增长33.4%,慧择增长源泉来自于何处?

一季度我国经济表现开局良好&#xff0c;保险行业增长态势明朗。从财报来看&#xff0c;中国人寿、中国平安、中国人保、新华保险、中国太保等大型上市险企Q1净利润纷纷超预期&#xff0c;随着巨头业绩转暖&#xff0c;保险中介行业也迎来了发展好时机。 近日&#xff0c;国内…

Xshell安装教程-Xshell 7激活教程-Xshell换机转移许可证详解

Xshell 7是一款功能强大的终端模拟器&#xff0c;支持SSh2&#xff0c;SSh3&#xff0c;SFTP&#xff0c;TELNET&#xff0c;RLOGIN和SERIAL。通过提供业界先进的性能&#xff0c;Xshell包含了其他SSH客户端无法发现的功能和优势。 本篇文章主要为大家介绍Xshell 7的安装、激活…

自动化回归测试工具—— AREX 上手实践

AREX 是一款开源的自动化测试工具平台&#xff0c;基于 Java Agent 技术与比对技术&#xff0c;通过流量录制回放能力实现快速有效的回归测试。同时提供了接口测试、接口比对测试等丰富的自动化测试功能&#xff0c;无需编程能力也可快速上手。 AREX 可以通过 Docker-Compose …

当开发同事辞职,接手到垃圾代码怎么办?

目录 一、前言 二、开发中的另一种选择 三、低代码概念 四、低代码在开发中的优势 01、开发效率提高 02、开发成本减少 03、维护性更高 五、有低代码后就不要开发了? 一、前言 事实上&#xff0c;垃圾项目是日积月累而成的&#xff0c;所谓冰冻三尺非一日之寒&#xf…

列表与字典—>一维列表

这一期内容可以结合着与第一期一起看https://guidm.blog.csdn.net/article/details/130900129?spm1001.2014.3001.5502 让我们来先做个题目&#xff1a; 1、输入一个整数n&#xff0c;要求输出[1,n]范围内的所有完数。 完数是一个正整数&#xff0c;该数恰好等于其所有不同…

计算机组成原理笔记概览

Chapter 1 计算机概要与技术Chapter 2 指令:计算机的语言Chapter 3 算术运算Chapter 4 处理器Chapter 5 大容量和高速度:开发存储器层次结构适配教材:《计算机组成与设计 硬件/软件接口 原书第5版》 要学计算机组成原理,你得知道它是干什么的,抓住总线:如何改进计算机的…

nacos入门-纯springboot整合nacos(百分之百可以-参考官网,比官网还全)

我是一个大数据工程师&#xff0c;但是被迫营业做后端&#xff0c;现在接手了一个项目&#xff0c;干&#xff01;有个东西叫Nacos。没接触过&#xff0c;那不行&#xff0c;会被优化的。我一大数据工程师搞gr的springcloud&#xff0c;网上很多说整合整合springboot的&#xf…