Springboot的统一响应类编写

ops/2024/9/23 4:49:53/

在Spring Boot项目中,处理HTTP响应通常涉及到几个方面:响应数据、响应编码(通常是指HTTP状态码)以及异常处理。这里,我将分别介绍如何编写响应类、如何设置响应编码,以及如何处理异常。

1. 编写响应类

在Spring Boot中,通常不需要显式编写一个“响应类”来专门处理HTTP响应,因为你可以直接在你的Controller层返回数据,Spring Boot会自动将其转换为JSON或其他格式(取决于请求头中的Accept字段)。但是,为了统一响应格式,你可以定义一个响应体模型(DTO, Data Transfer Object)。

java">public class ResponseDTO<T> {  private Integer code; // 响应编码,自定义,例如200表示成功  private String message; // 响应消息  private T data; // 响应数据  // 构造函数、getter和setter省略  public static <T> ResponseDTO<T> success(T data) {  return new ResponseDTO<>(200, "操作成功", data);  }  public static <T> ResponseDTO<T> error(Integer code, String message) {  return new ResponseDTO<>(code, message, null);  }  // 私有构造函数,用于实例化  private ResponseDTO(Integer code, String message, T data) {  this.code = code;  this.message = message;  this.data = data;  }  
}

2. 设置响应编码

在Spring Boot中,通常所说的“响应编码”是指HTTP状态码。在Controller层,你可以通过直接返回ResponseEntity或者通过异常处理来设置HTTP状态码。

直接返回ResponseEntity

java">@GetMapping("/data")  
public ResponseEntity<ResponseDTO<String>> getData() {  // 假设这里是业务逻辑  String data = "Hello, World!";  return ResponseEntity.ok(ResponseDTO.success(data));  
}  @GetMapping("/error")  
public ResponseEntity<ResponseDTO<String>> getError() {  // 模拟错误情况  return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(ResponseDTO.error(500, "服务器内部错误"));  
}

3. 异常处理

在Spring Boot中,你可以通过全局异常处理来优雅地处理Controller层抛出的异常,并返回统一的错误响应。

全局异常处理器

java">@ControllerAdvice  
public class GlobalExceptionHandler {  @ExceptionHandler(value = Exception.class)  public ResponseEntity<ResponseDTO<String>> handleException(Exception e) {  // 日志记录等操作  return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(ResponseDTO.error(500, "服务器内部错误: " + e.getMessage()));  }  // 你可以添加更多特定异常的处理器  
}

通过这种方法,你可以确保无论Controller层发生何种异常,都能被全局异常处理器捕获,并返回统一的响应格式。

总结,在Spring Boot中处理HTTP响应主要涉及到返回数据格式的统一(通过DTO)、HTTP状态码的设置(通过ResponseEntity或直接通过异常处理),以及全局异常处理以确保应用的健壮性。


http://www.ppmy.cn/ops/101206.html

相关文章

【Java设计模式】防腐层模式:确保在遗留系统中保持系统完整性

文章目录 【Java设计模式】防腐层模式&#xff1a;确保在遗留系统中保持系统完整性一、概述二、防腐层设计模式的别名三、防腐层设计模式的意图四、防腐层模式的详细解释及实际示例五、Java中防腐层模式的编程示例六、Java中何时使用防腐层模式七、Java中防腐层模式的实际应用八…

牛客小白月赛99(A-F)

牛客小白月赛99_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A 签到题&#xff0c;不解释 #include<iostream> using namespace std; using ll long long; int main() {int t; cin >> t;while(t--){ll a, b, x, y; cin >> a >> b >&…

通过C# 读取PDF页面大小、方向、旋转角度

在处理PDF文件时&#xff0c;了解页面的大小、方向和旋转角度等信息对于PDF的显示、打印和布局设计至关重要。本文将介绍如何使用免费.NET 库通过C#来读取PDF页面的这些属性。 文章目录 C# 读取PDF页面大小&#xff08;宽度、高度&#xff09;C# 判断PDF页面方向C# 检测PDF页面…

TCP三次握手过程详解

三次握手过程&#xff1a; 客户端视角&#xff1a; 1.客户端调用connect&#xff0c;开启计时器&#xff0c;发送SYN包&#xff0c;如果重传超时&#xff0c;认为连接失败 2.如果收到服务端的ACK&#xff0c;则进入ESTABLISHED状态 3.清除重传计时器&#xff0c;发送ACK&…

未来十年美业发展方向:健康与美容的结合|美业SaaS系统收银系统源码

随着人们对健康和美容的重视不断增加&#xff0c;美业正在经历一场革命性的变革。未来&#xff0c;美业的发展将更加注重健康与美容的结合&#xff0c;这一趋势将在多个领域产生深远影响。 下面博弈美业为大家阐释「为什么未来美业的发展方向是健康和美容的结合」&#xff1a;…

【Python学习手册(第四版)】学习笔记21-模块概览

个人总结难免疏漏&#xff0c;请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 import操作和模块是Python之中程序架构的核心。本文主要介绍了模块、属性以及导入的基础知识&#xff0c;并探索了import语句的操作&#xff08;搜索、可选编译、…

软考攻略/超详细/系统集成项目管理工程师/基础知识分享04

第二章 信息技术发展 2.1信息技术及其发展 2.1.1 计算机软硬件&#xff08;了解&#xff09; 在许多情况下&#xff0c;计算机的某些功能既可以由硬件实现&#xff0c;也可以由软件来实现。 1、计算机硬件 计算机硬件主要分为&#xff1a;控制器、运算器、存储器、输入设备和…

气膜馆:亲子乐园中的新兴娱乐空间—轻空间

在亲子乐园中&#xff0c;气膜馆作为一种新兴的娱乐空间&#xff0c;凭借其独特的设计和灵活的功能&#xff0c;成为了孩子和家长们的理想去处。这个轻盈而充满趣味的空间&#xff0c;不仅让孩子们尽情玩耍&#xff0c;也为家长提供了舒适的陪伴环境。 全天候的舒适体验 气膜馆…