Java Spring-Boot HTTP响应格式统一处理

***本文适合Java初中级开发,以及有一定Java基础的web研发工程师观看,主要介绍使用Springboot创建http 统一响应,和基本的Springboot的使用。***

目录

创建Spring Boot项目

首先,您需要使用Maven和Spring Initializer创建一个新的Spring Boot项目。您可以使用IntelliJ IDEA来完成这个过程,具体步骤如下:

    1. 打开IntelliJ IDEA。
    1. 选择 "File" -> "New" -> "Project..."。
    1. 在弹出的对话框中,选择 "Spring Initializer" 作为项目类型。
    1. 配置项目的基本信息,包括项目名称、位置等。
    1. 在 "Project SDK" 下拉菜单中选择您的Java SDK版本。
    1. 单击 "Next"。
    1. 在 "Spring Initializer" 对话框中,配置项目的依赖和选项,包括 Spring Web 和 Lombok。
    1. 单击 "Next"。
    1. 配置项目的包名和其他细节,然后单击 "Finish" 完成项目创建。
  • 10.POM文件
xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>springboot-response-demo</artifactId>
    <version>1.0.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <!-- Spring Boot Web Starter -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Lombok for Getter and Setter Annotations -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

编写代码示例

接下来,我们将创建一个示例来演示HTTP响应格式的统一处理。首先,我们将创建一个控制器层、一个服务层和一个数据模型层。

创建数据模型

src/main/java/com/example/springbootresponsedemo/model/ApiResponse.java

java 复制代码
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class ApiResponse<T> {
    private int status;
    private String message;
    private T data;

    public ApiResponse(int status, String message, T data) {
        this.status = status;
        this.message = message;
        this.data = data;
    }
}

创建服务层

src/main/java/com/example/springbootresponsedemo/service/MyService.java

java 复制代码
import org.springframework.stereotype.Service;

@Service
public class MyService {
    public String getMessage() {
        return "Hello, World!";
    }
}

创建控制器层

src/main/java/com/example/springbootresponsedemo/controller/MyController.java

java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class MyController {

    private final MyService myService;

    @Autowired
    public MyController(MyService myService) {
        this.myService = myService;
    }

    @GetMapping("/message")
    public ApiResponse<String> getMessage() {
        String message = myService.getMessage();
        return new ApiResponse<>(200, "Success", message);
    }
}

配置统一响应处理

src/main/java/com/example/springbootresponsedemo/exception/GlobalExceptionHandler.java

为了实现统一的HTTP响应格式处理,您可以创建一个全局异常处理器类。在这个类中,您可以捕获所有异常,并将它们包装成统一的响应格式。

java 复制代码
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public ResponseEntity<ApiResponse<String>> handleException(Exception e) {
        ApiResponse<String> response = new ApiResponse<>(500, "Internal Server Error", e.getMessage());
        return ResponseEntity.status(500).body(response);
    }
}

运行和测试

您现在可以运行您的Spring Boot应用程序。在浏览器或使用工具如curl等发起GET请求到 /api/message 端点。您应该能够看到统一格式的HTTP响应,如下所示:

json 复制代码
{
    "status": 200,
    "message": "Success",
    "data": "Hello, World!"
}

总结

在这个示例中,我们深入了解了如何构建一个完整的Spring Boot应用程序,包括控制器、服务层和数据模型层的创建。为了简化代码,我们利用了Lombok注解,自动生成了属性的getter和setter方法,从而提高了代码的可读性和维护性。

最重要的是,我们学习了如何通过全局异常处理器来实现HTTP响应格式的统一处理。这个功能让我们能够更好地应对应用程序中可能出现的异常情况,确保用户获得一致和友好的错误信息。

总之,这个示例展示了如何借助Spring Boot和相关工具,快速搭建一个高效、可维护的Web应用程序,并确保了对异常情况的处理方式是一致的,为开发者提供了更好的开发体验。

相关推荐
想用offer打牌4 小时前
MCP (Model Context Protocol) 技术理解 - 第二篇
后端·aigc·mcp
崔庆才丨静觅4 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
曹牧5 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
passerby60615 小时前
完成前端时间处理的另一块版图
前端·github·web components
KYGALYX5 小时前
服务异步通信
开发语言·后端·微服务·ruby
掘了5 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅5 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅5 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
爬山算法6 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty7256 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai