如何使用 Spring ResponseEntity 控制 HTTP 响应

ResponseEntity 是 org.springframework.http 包中的一个类,它代表了完整的 HTTP 响应,包括状态码、头部信息和响应体。当我们的控制器方法返回一个 ResponseEntity 时,Spring 会利用我们提供的信息来构建最终发送给客户端的 HTTP 响应。

它允许开发者:

  • 定义 HTTP 状态码(例如:200 OK, 404 Not Found, 500 Internal Server Error)
  • 设置自定义头部信息(例如:Content-Type, Cache-Control, Authorization)
  • 包含响应体(JSON, XML, 纯文本等)

ResponseEntity 的组成部分

1. HTTP 状态码

指示 HTTP 请求的结果。一些常用的代码包括:

  • 200 OK: 请求处理成功
  • 201 Created: 创建了一个新资源
  • 204 No Content: 请求成功,但没有响应体
  • 400 Bad Request: 无效或格式错误的请求
  • 404 Not Found: 未找到请求的资源
  • 500 Internal Server Error: 服务器处理请求失败

2. HTTP 头部

头部提供了关于响应的元数据。常见的头部包括:

  • Content-Type: 定义响应的格式(例如 application/json)
  • Authorization: 用于发送身份验证凭据
  • Custom Headers (自定义头部): 开发者可以定义自定义头部(例如 X-Custom-Header)

示例:

> .header("Custom-Header", "CustomValue")

3. 响应体

响应体包含响应的主要内容。它可以是:

  • 代表请求数据的 JSON 对象
  • 描述操作结果的纯文本消息
  • 如果返回页面,则为 HTML 内容
  • 如果不需要响应内容,则为空

实战演练:在 Spring Boot 中使用 ResponseEntity

步骤 1:创建一个 Spring Boot 项目

使用 IntelliJ IDEA 或 Spring Initializr 创建一个新的 Spring Boot 项目。

  • Name (项目名称): response-entity-example
  • Language (语言): Java
  • Type (类型): Maven
  • Packaging (打包方式): Jar

!project metadata在 Intellij 中创建项目

Project Structure (项目结构):

!Project Structure项目结构

步骤 2:添加依赖项

在 pom.xml 文件中添加所需的依赖项。

>

>

>

>

> org.springframework.boot

>

> spring-boot-starter-web

>

>

>

>

>

> org.springframework.boot

>

> spring-boot-devtools

>

> runtime

>

> true

>

>

>

>

>

> org.projectlombok

>

> lombok

>

> true

>

>

>

>

>

> org.springframework.boot

>

> spring-boot-starter-test

>

> test

>

>

>

>

步骤 3:创建控制器类

示例控制器:

Java


CODEBLOCK_8d1f4d21

  • successResponse(): 返回带有成功消息的 HTTP 200 OK。
  • notFoundResponse(): 当资源不可用时返回 HTTP 404 Not Found。
  • customHeaderResponse(): 返回 HTTP 200 OK 并向响应中添加了自定义头部。

步骤 4:主应用程序类

Java


CODEBLOCK_ba702da6

步骤 5:运行应用程序

运行该项目。然后,我们可以使用浏览器或 Postman 等工具访问上述端点来测试响应。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/36441.html
点赞
0.00 平均评分 (0% 分数) - 0