网络接口返回类ResponseEntity

网络接口返回类ResponseEntity

  • 简介
  • 方法
    • 获取工厂方法
      • ResponseEntity.ok()返回BodyBuilder
        • 返回文字信息
        • 返回类对象(Spring自动转换为json格式)
        • 返回空内容‌
      • ResponseEntity.notFound()返回HeadersBuilder
        • 返回文字信息
      • status(HttpStatus)返回BodyBuilder
      • noContent()返回HeadersBuilder
    • 设置响应头信息中的指定属性和值
    • headers(headers)
    • body(resource)
  • 使用示例

简介

使用的org.springframework.http.ResponseEntity;,是 Spring Framework 提供的、一个Spring中的通用类。它用于构建 HTTP 响应的方式、返回一个 HTTP 状态码为 200 OK 的响应,并且可以附带返回的数据。
待补入此博客。

方法

ResponseEntity 用于表示整个 HTTP 响应,包括:

  • 状态码 (HTTP status code)
  • 头部信息 (HTTP headers)
  • 响应体 (HTTP body)

方法返回值的类型ResponseEntity<中的类型>取决于接口返回值body(中的类型),因为public abstract <T> ResponseEntity<T> body( @Nullable T body )

获取工厂方法

ResponseEntity.ok()返回BodyBuilder

ResponseEntity.ok() 是一个静态工厂方法、用于返回一个 ResponseEntity. BodyBuilder来生成具体的请求成功返回信息,使用该 ResponseEntity. BodyBuilder生成的都是状态码为 200 OK、请求成功的响应

返回文字信息
return ResponseEntity.ok("Operation successful.");

该接口响应的返回信息,如下图所示。
在这里插入图片描述

返回类对象(Spring自动转换为json格式)

如果返回的对象是User类,Spring会自动将其转换为JSON格式(前提是项目中有Jackson或类似的库支持)。

return ResponseEntity.ok(new FileRecord("filename","path",new Date()));

请求该接口收到的返回信息,如下图所示。
在这里插入图片描述

返回空内容‌

返回一个HTTP 200响应,但没有响应体。

//因为ResponseEntity.ok()返回的是 ResponseEntity.BodyBuilder,所以相当于BodyBuilder.build();
return ResponseEntity.ok().build();

请求该接口收到的返回信息(为空、下图的1为postman的行数标记而非接口返回信息),如下图所示。
在这里插入图片描述

ResponseEntity.notFound()返回HeadersBuilder

ResponseEntity.notFound() 自认也是一个静态工厂方法、用于返回一个 ResponseEntity. HeadersBuilder<?>来生成具体的404 notFound返回信息,使用该 ResponseEntity. BodyBuilder生成的都是状态码为 404 notFound、请求资源未找到“Requested resource could not be found. 的响应

返回文字信息
return ResponseEntity.notFound().build();

该接口响应的返回信息,如下图所示。
在这里插入图片描述

status(HttpStatus)返回BodyBuilder

ResponseEntity.status(HttpStatus) 自认也是一个静态工厂方法、用于返回一个ResponseEntity. BodyBuilder来生成具体的HttpStatus类返回信息,使用该 ResponseEntity. BodyBuilder生成的都是状态码为指定HttpStatus的响应
本例中,返回类型ResponseEntity<中的类型>取决于接口返回值body(中的类型),因为public abstract <T> ResponseEntity<T> body( @Nullable T body )

public ResponseEntity<String> downloadFile(@PathVariable String filename) {
// 返回 404 和错误消息
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("User not found."); 

该接口响应的返回信息,如下图所示。
在这里插入图片描述

noContent()返回HeadersBuilder

ResponseEntity.noContent() 自认也是一个静态工厂方法、用于返回一个ResponseEntity. HeadersBuilder来通过status(HttpStatus.NO_CONTENT)生成类返回信息,使用该 ResponseEntity. HeadersBuilder生成的都是状态码为HTTP 204 No Content的响应
本例中,返回类型ResponseEntity<中的类型>取决于接口返回值body(中的类型),因为public abstract <T> ResponseEntity<T> body( @Nullable T body )

return ResponseEntity.noContent().build();

在这里插入图片描述

设置响应头信息中的指定属性和值

比如设置content-type使用HttpHeaders.CONTENT_TYPE

return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).build();

请求该接口收到的返回信息,下图红框中的内容是上面设置的响应头信息,如下图所示。
在这里插入图片描述
如果修改上述代码

return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_GRAPHQL_VALUE).build();

请求该接口收到的返回信息,此时下图响应头信息发生了变化,如下图红框所示。
在这里插入图片描述

headers(headers)

由…调用,返回``。自定义响应头 如果需要自定义响应头,可以链式调用 header() 方法:

HttpHeaders headers = new HttpHeaders();
//下载文件所需
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + encodedFileName + "\"");
//
return ResponseEntity.ok().headers(headers).body(resource);

body(resource)

ResponseEntity. BodyBuilder调用,返回 ResponseEntity<T>

HttpHeaders headers = new HttpHeaders();
FileSystemResource resource = new FileSystemResource(file);
return ResponseEntity.ok().headers(headers).body(resource);

使用示例

@GetMapping("/download/{filename:.+}")public ResponseEntity<FileSystemResource> downloadFile(@PathVariable String filename) {// 假设文件存储在项目的files目录下File file = new File("files/" + filename);if (!file.exists()) {return ResponseEntity.status(HttpStatus.NOT_FOUND).build();}FileSystemResource resource = new FileSystemResource(file);HttpHeaders headers = new HttpHeaders();headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName());return ResponseEntity.ok().headers(headers).body(resource);}

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

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

相关文章

Redis:现代服务端开发的缓存基石与电商实践-优雅草卓伊凡

Redis&#xff1a;现代服务端开发的缓存基石与电商实践-优雅草卓伊凡 一、Redis的本质与核心价值 1.1 Redis的技术定位 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的内存数据结构存储系统&#xff0c;由Salvatore Sanfilippo于2009年创建。它不同于传…

macOS上管理多个Node.js版本

管理工具 fnm 和 nvm nvm&#xff1a;作为最广泛使用的 Node.js 版本管理器&#xff0c;使用 Bash 编写&#xff0c;适用于类 UNIX 环境(如 macOS 和 Linux)&#xff0c;也可以通过兼容的 shell(如 WSL)在 Windows 上使用。fnm&#xff1a;(Fast Node Manager)一种较新的、快速…

uDistil-Whisper:低数据场景下基于无标签数据过滤的知识蒸馏方法

uDistil-Whisper: Label-Free Data Filtering for Knowledge Distillation in Low-Data Regimes 会议&#xff1a;2025年NAACL 机构&#xff1a;卡内基梅降大学 Abstract 近期研究通过伪标签&#xff08;pseudo-labels&#xff09;将Whisper的知识蒸馏到小模型中&#xff0…

【MySQL】-- 数据库约束

文章目录 1. 什么是数据库约束2. 约束类型3. NOT NULL 非空约束4. DEFALUT 默认值约束5. UNIQUE 唯一约束6. PRIMARY KEY 主键约束6.1 自增主键6.1 一个自增主键包含多个列 7. FOREIGN KEY 外键约束8. CHECK 约束 1. 什么是数据库约束 数据库约束是指对数据库表中的数据所施加…

鸿蒙NEXT开发动画案例2

1.创建空白项目 2.Page文件夹下面新建Spin.ets文件&#xff0c;代码如下&#xff1a; // 接口定义&#xff08;必须放在使用前&#xff09; /*** 关键帧动画整体配置参数*/ interface KeyframeAnimationConfig {iterations: number;delay: number; }/*** 单个关键帧动画项*/…

团队协作的润滑剂——GitHub与协作流程

各位代码界的社交恐惧症患者们&#xff0c;今天我们要聊的是如何假装自己很会团队协作——使用GitHub&#xff01;这就像程序员版的"相亲平台"&#xff0c;只不过在这里&#xff0c;你展示的不是自拍和收入&#xff0c;而是代码和commit记录&#xff08;后者往往更令…

「Mac畅玩AIGC与多模态13」开发篇09 - 基于多插件协同开发智能体应用(天气+名言查询助手)

一、概述 本篇介绍如何在 macOS 环境下&#xff0c;同时接入多个自定义 OpenAPI 插件&#xff0c;实现智能体根据用户请求自动分析&#xff0c;调用天气查询或名言查询服务&#xff0c;完成多功能协同应用开发。 二、环境准备 1. 确认本地开发环境 macOS 系统Dify 平台已部…

react-12父子组件间的数据传递(子传父)(父传子)- props实现

1.子组件调用父组件的函数并传递数据&#xff08;子传父&#xff09; 1.1父组件 import React, { Component } from react; import ChildComponent from ./ChildComponent;class ParentComponent extends Component {constructor(props) {super(props);this.state {items: […

Spring Boot 单元测试使用教程(仅供参考)

单元测试是软件开发中至关重要的一环&#xff0c;Spring Boot 提供了强大的测试支持。以下是 Spring Boot 单元测试的详细教程。 1. 准备工作 1.1 添加测试依赖 在 pom.xml 中添加测试相关依赖&#xff1a; <dependency><groupId>org.springframework.boot</…

React Hooks速成

1、useReducer 适用情况为对一个状态多种复杂操作,通俗的讲就是比如对count这个变量加减乘除的各种情况 改造前 import { useState } from "react";function App() {//计数器const [count, setCount] useState(0);const handleIncrement () > {setCount(coun…

k8s node 内存碎片化如何优化?

在 Kubernetes 集群中&#xff0c;内存碎片化&#xff08;Memory Fragmentation&#xff09;会导致系统无法分配连续的内存块&#xff0c;即使总内存充足&#xff0c;也可能触发 OOM&#xff08;Out of Memory&#xff09;或影响性能。以下是针对 k8s Node 内存碎片化的优化策略…

目标检测(Object Detection)研究方向常用数据集简单介绍

目录 一、目标检测研究方向简介 二、目标检测常用数据集详解 通用目标检测数据集 领域专用数据集 三、数据集选择建议 一、目标检测研究方向简介 目标检测是计算机视觉的核心任务之一&#xff0c;旨在从图像或视频中定位并识别出所有感兴趣的物体&#xff0c;输出其类别和…

即开即用,封装 Flask 项目为 exe 文件实操步骤

见字如面&#xff0c;朋友们&#xff01; 嗨&#xff0c;这里是 AIGC 创意人_竹相左边&#xff01; 正如你们所知&#xff0c;我正在通过 AI 自学软硬件工程师&#xff0c;目标是手搓一台可回收火箭玩具&#xff01; 最近&#xff0c;我被《流浪地球 2》中马兆的那句“没有硬…

uniapp开发微信小程序时如何进行分包(新手图文)

我们在进行uniapp微信小程序开发的时候&#xff0c;每次上传都提示包太大&#xff0c;主包大小不能超过 2M&#xff0c; 这就很头疼&#xff0c;这个时候&#xff0c;唯一的解决方案就是分包了&#xff0c;那如何进行分包呢&#xff1f; 分包步骤如下&#xff1a; 一、配置man…

基于C++的IOT网关和平台2:github项目ctGateway技术说明书

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。 源码指引:github源码指引_初级代码游戏的博客-CSDN博客 系…

从巴别塔到通天塔:Manus AI 如何重构多语言手写识别的智能版图

一、引言&#xff1a;当人类手写遇上 AI “巴别塔” 在幼发拉底河畔的古老传说中&#xff0c;巴别塔的崩塌象征着人类语言互通的终结。而在数字时代&#xff0c;全球 7000 余种语言的手写文字&#xff0c;正成为横亘在人机交互之间的新 “巴别塔”—— 阿拉伯文的连笔天书、中…

n8n 快速入门2:构建自动化工作流

n8n 快速入门2:构建自动化工作流 什么是n8n?项目目标准备工作步骤一:创建新工作流步骤二:添加触发节点步骤三:配置NASA节点与凭证1. 添加NASA节点2. 设置NASA API凭证3. 使用表达式设置时间范围步骤四:添加If条件节点1. 创建条件分支2. 测试条件逻辑步骤五:配置输出节点…

从实列中学习linux shell10 : 如何根据服务器的内存,cpu 以及 ssd硬盘 来确定mysql 的最大并发数

以下是根据服务器硬件资源智能推荐MySQL最大并发连接数 包含详细的计算逻辑和实时资源检测&#xff1a; 且记&#xff1a;该脚本要放在 安装mysql的服务器上 运行 第一步&#xff1a;实现脚本 #!/bin/bash# 计算MySQL最大连接数推荐值 # 公式说明&#xff1a;取CPU计算值与内…

数据结构--AVL树

目录 前言 AVL树的特点 AVL树的插入 节点的定义 情况分析 AVL树的旋转 右单旋 左单旋 左右双旋 右左双旋 ​编辑总结 验证AVL树 前言 二叉搜索树可以帮助我们以极高的效率查找(理想情况下是logn)&#xff0c;但是当在极端情况下&#xff0c;比如当树中的节点值是有…

泰迪杯特等奖案例学习资料:基于多模态融合与边缘计算的智能温室环境调控系统

(第十二届泰迪杯数据挖掘挑战赛特等奖案例解析) 一、案例背景与核心挑战 1.1 应用场景与行业痛点 在现代设施农业中,温室环境调控直接影响作物产量与品质。传统温室管理存在以下问题: 环境参数耦合性高:温度、湿度、光照、CO₂浓度等参数相互影响,人工调控易顾此失彼。…