網絡接口返回類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.pswp.cn/pingmian/79746.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79746.shtml
英文地址,請注明出處:http://en.pswp.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?濃度等參數相互影響,人工調控易顧此失彼。…