spring-webmvc @ResponseStatus 典型用法

典型用法

為某個接口指定固定的 HTTP 狀態碼(如創建成功返回 201)

當該方法執行成功時,HTTP 響應狀態碼會是 201 Created。
適用于不需要動態控制狀態碼的場景。

@PostMapping("/users")
@ResponseStatus(HttpStatus.CREATED)
public User createUser(@RequestBody User user) {return userService.save(user);
}

拋出自定義異常時自動設置 HTTP 狀態碼(如資源未找到返回 404)

當拋出 ResourceNotFoundException 時,Spring 會自動將其映射為 404 Not Found 響應。非常適合統一異常處理機制。

@ResponseStatus(HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {public ResourceNotFoundException(String message) {super(message);}
}@GetMapping("/users/{id}")
public User getUserById(@PathVariable Long id) {return userService.findById(id).orElseThrow(() -> new ResourceNotFoundException("User not found"));
}

結合 @ControllerAdvice 實現全局異常處理

在結合 @ControllerAdvice 實現全局異常處理時,通常不會直接使用 @ResponseStatus 注解來設置響應狀態碼,而是通過返回值類型 ResponseEntity 或其他封裝方式來顯式控制 HTTP 狀態碼和響應體內容。

@ControllerAdvice
public class GlobalExceptionHandler {// 處理資源未找到異常@ExceptionHandler(ResourceNotFoundException.class)public ResponseEntity<ErrorResponse> handleResourceNotFound(ResourceNotFoundException ex) {ErrorResponse error = new ErrorResponse("RESOURCE_NOT_FOUND", ex.getMessage());return ResponseEntity.status(HttpStatus.NOT_FOUND).body(error);}// 處理參數校驗異常@ExceptionHandler(MethodArgumentNotValidException.class)public ResponseEntity<ErrorResponse> handleValidationExceptions(MethodArgumentNotValidException ex) {Map<String, String> errors = new HashMap<>();ex.getBindingResult().getAllErrors().forEach(error -> {String field = ((FieldError) error).getField();String message = error.getDefaultMessage();errors.put(field, message);});ErrorResponse error = new ErrorResponse("VALIDATION_ERROR", errors);return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(error);}// 處理所有其他異常@ExceptionHandler(Exception.class)public ResponseEntity<ErrorResponse> handleGeneralException(Exception ex) {ErrorResponse error = new ErrorResponse("INTERNAL_SERVER_ERROR", "An unexpected error occurred");return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(error);}
}

指定響應體內容(不推薦)

雖然 @ResponseStatus 可以設置 reason 屬性,但不推薦直接通過注解設置響應體內容,因為這會導致響應格式不一致。

@ResponseStatus(value = HttpStatus.FORBIDDEN, reason = "Access denied")
public class AccessDeniedException extends RuntimeException {
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/85449.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/85449.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/85449.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鴻蒙Next倉頡語言開發實戰教程:設置頁面

倉頡語言商城應用的頁面開發教程接近尾聲了&#xff0c;今天要分享的是設置頁面&#xff1a; 導航欄還是老樣式&#xff0c;介紹過很多次了&#xff0c;今天不再贅述。這個頁面的內容主要還是介紹List容器的使用。 可以看出列表內容分為三組&#xff0c;所以我們要用到ListIte…

Redis 第三講 --- 指令篇 通用命令(一)

前言&#xff1a; 在《Redis 第二講》中&#xff0c;我們完成了 Redis 的安裝與環境配置&#xff0c;為實際操作奠定了基礎。本講將正式進入 Redis 的核心領域——指令操作。我們將從最基礎的鍵值操作開始&#xff0c;逐步掌握數據讀寫、鍵管理及生產環境注意事項&#xff0c;…

數字媒體專業課程介紹以及就業方向

專業課程體系融合藝術創作與技術實踐,旨在培養兼具美學素養和產業應用能力的復合型人才。以下是核心課程模塊及代表性課程,涵蓋從基礎到高階的全流程訓練: ?? 一、核心課程體系 藝術基礎課程 繪畫訓練:素描、速寫、色彩理論、構成藝術,培養造型能力與色彩運用2610。 動…

Spring-創建第一個SpringBoot項目

目錄 一.使用IDEA創建 1.專業版 2.社區版 二.使用網頁創建項目 三.項目目錄介紹 一.使用IDEA創建 1.專業版 修改Server URL為https://start.aliyun.com 2.社區版 這里需要注意對應的IDEA版本&#xff0c;版本不對導入無法使用。 不需要解壓&#xff0…

【數據分析三:Data Storage】數據存儲

數據真是越來越多啊 正文開始 一、數據 結構化數據 可以使用關系型數據庫表示和存儲的數據&#xff0c;擁有固定結構 半結構化數據 弱結構化&#xff0c;雖然不符合關系型數據模型的要求&#xff0c;但是含有相關的標記(自描述結構)&#xff0c;分割實體及其屬性 。如&#xf…

Spring Boot 整合 Spring AI 與 MCP 開發智能體工具指南

Spring Boot 整合 Spring AI 與 MCP 開發智能體工具指南 一、引言 隨著大語言模型(LLM)的普及&#xff0c;越來越多的開發者希望將其集成到自己的應用中。Spring AI 作為 Spring 生態下的 AI 集成框架&#xff0c;提供了便捷的方式來對接各種大模型。而 MCP(Model Context Pr…

【開源項目】GraphRAG Agent:可解釋、可推理的下一代智能問答系統

GraphRAG Agent&#xff1a;可解釋、可推理的下一代智能問答系統 ??引言?? 傳統 RAG&#xff08;檢索增強生成&#xff09;系統常因“黑盒推理”和上下文斷裂被詬病。微軟開源的 GraphRAG 框架嘗試用知識圖譜解決這一問題&#xff0c;而??Graph RAG Agent??&#xff0…

【論文筆記】【強化微調】AgentThink:思維鏈推理 + 工具調用

AgentThink: A Unified Framework for Tool-Augmented Chain-of-Thought Reasoning in Vision-Language Models for Autonomous Driving 1. 引述 這是一篇自動駕駛領域的論文。我對這篇論文主要感興趣的點在于其對于工具調用&#xff08;Tool Call&#xff09;的設計。這一點同…

前端頁面Javascript進階DOM與BOM

一、DOM基礎概念 DOM 是文檔對象模型&#xff0c;提供編程接口用于操作 HTML 和 XML 文檔。它將文檔表示為節點樹&#xff0c;每個節點代表文檔的一部分&#xff0c;如元素、文本、屬性等。通過 DOM&#xff0c;開發者可以訪問和修改文檔的結構、樣式與內容。 文檔節點類型 …

AWS CloudFormation深度解析:構建現代云原生應用基礎設施

在現代云原生應用開發中,基礎設施即代碼(Infrastructure as Code, IaC)已成為標準實踐。本文將深入解析一個完整的AWS CloudFormation模板,該模板為GlowChat Connector應用構建了生產級的基礎設施。 模板概述 這個CloudFormation模板是一個兩部分部署架構中的第一部分,專…

Oracle 查看所有表的字段名、數據類型及長度

1.只查看某個特定表的字段名 SELECT column_name, data_type, data_length FROM user_tab_columns WHERE table_name 你的表名 -- 注意大寫 ORDER BY column_id;2.查看當前用戶下所有表的字段名 SELECT table_name, column_name, data_type, data_length FROM user_tab_colu…

創客匠人分享知識付費監管升級下的行業價值重構:從合規挑戰到發展機遇的實踐路徑

引言&#xff1a;監管政策背后的行業邏輯轉向 知識付費領域的監管體系升級&#xff0c;本質上是對行業發展路徑的重新校準。隨著 "內容產品需具備知識沉淀載體" 等新規落地&#xff0c;行業正在經歷從 "流量驅動型增長" 到 "價值驅動型發展" 的…

邊緣計算的認識和應用

邊緣計算 邊緣計算是一種分布式計算范式&#xff0c;它將計算能力和數據存儲放置在離數據源更近的位置&#xff0c;而不是依賴于集中式的數據中心。通過在“邊緣”進行數據處理&#xff0c;邊緣計算可以減少延遲、提高響應速度、節省帶寬&#xff0c;并增強數據隱私和安全性。…

Arduino R4 WIFI橫向滾動顯示16×16LED屏

實現一個從左向右橫向滾動的"吉祥如意"顯示效果。 arduino r4 WiFi滾動顯示16*16led #include <SPI.h>// 引腳定義 const int RowA 2, RowB 3, RowC 4, RowD 5; const int OE 6; const int LATCH 10;// 字模數據 (吉祥如意) const PROGMEM byte characte…

html css js網頁制作成品——HTML+CSS+js力學光學天文網頁設計(4頁)附源碼

目錄 一、&#x1f468;?&#x1f393;網站題目 二、??網站描述 三、&#x1f4da;網站介紹 四、&#x1f310;網站效果 五、&#x1fa93; 代碼實現 &#x1f9f1;HTML 六、&#x1f947; 如何讓學習不再盲目 七、&#x1f381;更多干貨 一、&#x1f468;?&#x1f…

嵌入式開發之freeRTOS移植

FreeRTOS 是一款廣泛應用于嵌入式系統的開源實時操作系統&#xff08;RTOS&#xff09;&#xff0c;其移植過程需要結合具體硬件平臺和編譯器進行適配。以下是 FreeRTOS 移植的詳細步驟和關鍵注意事項&#xff1a; 一、移植前的準備工作 1. 硬件平臺確認 處理器架構&#xf…

【算法 day07】LeetCode 344.反轉字符串 | 541. 反轉字符串II | 卡碼網:54.替換數字

344.反轉字符串 題目鏈接 | 文檔講解 |視頻講解 : 鏈接 1.思路&#xff1a; 采用雙指針&#xff0c;left從0開始移動,right從尾元素進行移動 循環判斷條件&#xff1a;left< right,邊界值使用舉例法&#xff0c;eg: [ h ,e ,l,o ]偶數個不會相遇, [h ,e ,l ,l ,o ]奇數個&…

從檢索到生成:RAG 如何重構大模型的知識邊界?

引言&#xff1a;知識邊界的突破與重構 在人工智能技術快速發展的今天&#xff0c;大型語言模型&#xff08;LLMs&#xff09;已經展現出強大的文本生成和理解能力。然而&#xff0c;這些模型在實際應用中仍面臨著知識時效性、事實準確性和可溯源性等核心挑戰。檢索增強生成&a…

前端基礎知識CSS系列 - 05(BFC的理解)

一、是什么 我們在頁面布局的時候&#xff0c;經常出現以下情況&#xff1a; 這個元素高度怎么沒了&#xff1f;這兩欄布局怎么沒法自適應&#xff1f;這兩個元素的間距怎么有點奇怪的樣子&#xff1f;...... 原因是元素之間相互的影響&#xff0c;導致了意料之外的情況&…

Prompt Engineering 學習指南:從入門到精通的最佳路徑與資源

本 Prompt Engineering 技術報告,旨在提供一個從入門到精通的清晰學習路徑、核心方案,并附上最關鍵的 GitHub 倉庫資源。您可以將此報告作為快速提升 Prompt 能力的“速查手冊”和“成長地圖”。 Prompt Engineering 學習指南:從入門到精通的最佳路徑與資源 技術報告摘要 (…