HTTP請求參數類型及對應的后端注解

在Java后端開發中,HTTP請求的不同部分需要使用不同的注解來處理。以下是四種主要請求參數類型及其對應的Spring注解:

1. 請求頭(Headers)

  • ??位置??:HTTP請求的頭部信息

  • ??常用場景??:認證信息(Token)、客戶端信息、內容類型等

  • ??Spring注解??:

    • @RequestHeader- 獲取單個請求頭

    • @RequestHeader Map<String, String>- 獲取所有請求頭

@GetMapping("/example")
public ResponseEntity<?> example(@RequestHeader("Authorization") String authToken,@RequestHeader Map<String, String> headers) {// 使用authToken和headers
}

2. 請求體(Body)

  • ??位置??:HTTP請求的主體內容

  • ??常用場景??:POST/PUT請求的JSON/XML數據

  • ??Spring注解??:

    • @RequestBody- 將請求體反序列化為Java對象

@PostMapping("/users")
public ResponseEntity<User> createUser(@RequestBody UserCreateDTO userDTO) {// 處理userDTO
}

3. 路徑參數(Path Variables)

  • ??位置??:URL路徑中的變量部分

  • ??常用場景??:RESTful API的資源標識

  • ??Spring注解??:

    • @PathVariable- 獲取路徑中的變量

@GetMapping("/users/{userId}")
public ResponseEntity<User> getUser(@PathVariable Long userId) {// 根據userId查詢用戶
}

4. 查詢參數(Query Parameters)

  • ??位置??:URL中?后面的鍵值對

  • ??常用場景??:過濾條件、分頁參數等

  • ??Spring注解??:

    • @RequestParam- 獲取單個查詢參數

    • @RequestParam Map<String, String>- 獲取所有查詢參數

    • @RequestParam(required = false)- 可選參數

    • @RequestParam(defaultValue = "default")- 帶默認值

@GetMapping("/products")
public ResponseEntity<List<Product>> getProducts(@RequestParam String category,@RequestParam(required = false) String sortBy,@RequestParam(defaultValue = "1") int page) {// 根據參數查詢產品
}

綜合使用示例

@RestController
@RequestMapping("/api/v1")
public class UserController {@PutMapping("/users/{id}/status")public ResponseEntity<?> updateUserStatus(@PathVariable Long id,@RequestHeader("X-Auth-Token") String token,@RequestBody StatusUpdateDTO updateDTO,@RequestParam(defaultValue = "false") boolean notify) {// 驗證token// 更新用戶狀態// 如果需要則發送通知return ResponseEntity.ok().build();}
}

其他相關注解

  1. ??@ModelAttribute??

    • 用于綁定請求參數到命令對象

    • 常用于表單提交

  2. ??@CookieValue??

    • 用于獲取Cookie值

  3. ??參數校驗注解??(需配合@Valid使用)

    • @NotNull, @Size, @Pattern

最佳實踐建議

  1. RESTful API設計:

    • 資源標識用路徑參數(@PathVariable)

    • 過濾條件用查詢參數(@RequestParam)

    • 創建/更新數據用請求體(@RequestBody)

  2. 安全性:

    • 敏感信息(如認證token)應放在請求頭

    • 不要用GET請求發送敏感數據

  3. 可讀性:

    • 參數名要有意義

    • 可選參數要設置required=false或默認值

  4. 版本控制:

    • 建議在請求頭或路徑中包含API版本信息

這些注解是Spring MVC/WebFlux中最常用的參數綁定方式,掌握它們可以高效地處理各種HTTP請求。

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

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

相關文章

服務器硬件電路設計之 SPI 問答(一):解密 SPI—— 從定義到核心特性

在服務器硬件電路設計中&#xff0c;SPI&#xff08;Serial Peripheral Interface&#xff0c;串行外設接口&#xff09;是一種關鍵的通信總線。它由摩托羅拉公司開發&#xff0c;是全雙工、同步串行通信總線&#xff0c;主要用于微控制器與外圍設備之間的通信&#xff0c;憑借…

【2025CVPR-目標檢測方向】OW-OVD:統一的開放世界和開放詞匯對象檢測

研究背景與動機? ?問題?:傳統目標檢測器(封閉集)需預定義所有類別,無法適應動態開放環境。現有研究多獨立解決開放詞匯檢測(OVD)或開放世界檢測(OWOD),未結合兩者優勢: ?OVD?:通過文本-視覺嵌入匹配實現零樣本泛化,但無法主動發現未知對象。 ?OWOD?:可主動…

基于Python的就業信息推薦系統 Python+Django+Vue.js

本文項目編號 25011 &#xff0c;文末自助獲取源碼 \color{red}{25011&#xff0c;文末自助獲取源碼} 25011&#xff0c;文末自助獲取源碼 目錄 一、系統介紹二、系統錄屏三、啟動教程四、功能截圖五、文案資料5.1 選題背景5.2 國內外研究現狀 六、核心代碼6.1 查詢數據6.2 新…

el-date-picker type=daterange 日期范圍限制

html &#xff08;組件&#xff1a;element-ui&#xff09;重點&#xff1a; :picker-options"pickerOptions"<template><el-date-pickerv-model"form.dateRange"type"daterange" value-format"yyyy-MM-dd"range-separator&q…

【38頁PPT】關于5G智慧園區整體解決方案(附下載方式)

篇幅所限&#xff0c;本文只提供部分資料內容&#xff0c;完整資料請看下面鏈接 https://download.csdn.net/download/2501_92808811/91694207 資料解讀&#xff1a;《關于5G智慧園區整體解決方案》 詳細資料請看本解讀文章的最后內容。 智慧園區行業理解與建設目標 智慧園…

Kafka的ISR、OSR、AR詳解

Kafka中的ISR、OSR和AR是副本管理機制的核心概念&#xff0c;它們共同保障了Kafka的高可用性和數據一致性。下面我將詳細解釋這些概念及其相互關系。 1. 基本概念 1.1 AR (Assigned Replicas) - 分配副本 定義&#xff1a;一個分區的所有副本集合稱為AR&#xff0c;即Kafka為主…

第一階段C#基礎-13:索引器,接口,泛型

1_索引器&#xff08;1&#xff09;索引器是C#中一個強大而實用的特性&#xff0c;允許像訪問數組一樣訪問類的成員&#xff08;2&#xff09;索引器&#xff1a;一種可以讓我們使用索引來訪問對象的一種方法&#xff0c;是一組get,set訪問器&#xff0c;與屬性類似&#xff0c…

SQL-leetcode— 2356. 每位教師所教授的科目種類的數量

2356. 每位教師所教授的科目種類的數量 表: Teacher ----------------- | Column Name | Type | ----------------- | teacher_id | int | | subject_id | int | | dept_id | int | ----------------- 在 SQL 中&#xff0c;(subject_id, dept_id) 是該表的主鍵。 該表…

基于單片機溫控風扇設計/PWM調速風扇/智能風扇

傳送門 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目速選一覽表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目功能速覽 概述 該設計基于單片機實現智能溫控風扇系統&#xff0c;通過溫度傳感器實時監測環境溫度&#xff0c;…

【datawhale組隊學習】RAG技術 - TASK02

教程地址&#xff1a;https://github.com/datawhalechina/all-in-rag/ 感謝datawhale的教程&#xff0c;以下筆記大部分內容來自該教程 文章目錄基于LangChain框架的RAG實現初始化設置數據準備索引構建查詢與檢索生成集成低代碼&#xff08;基于LlamaIndex&#xff09;conda ac…

Mitt 事件發射器完全指南:200字節的輕量級解決方案

簡介 Mitt 是一個輕量級的事件發射器庫&#xff0c;體積小巧&#xff08;約 200 字節&#xff09;&#xff0c;無依賴&#xff0c;支持 TypeScript。它提供了簡單而強大的事件發布/訂閱機制&#xff0c;適用于組件間通信、狀態管理等場景。 特點 &#x1f680; 超輕量級&…

數據庫鎖與死鎖-筆記

一、概述 數據庫是一個共享資源,可以供給多個用戶使用。運行多個用戶同時使用一個數據庫的數據系統統稱多用戶數據庫系統。例如,飛機訂票數據庫系統。在這樣的一個系統中,在同一時刻并發運行的事務數可達數百上千個。 當多個用戶并發地存取數據庫時就會產生多個事務同時存…

滲透藝術系列之Laravel框架(二)

任何軟件&#xff0c;都會存在安全漏洞&#xff0c;我們應該將攻擊成本不斷提高&#xff01;?**——服務容器與中間件的攻防博弈**?本文章僅提供學習&#xff0c;切勿將其用于不法手段&#xff01;一、服務容器的"依賴注入陷阱"1.1 接口綁定的"影子服務"…

官網SSO登錄系統的企業架構設計全過程

第一階段&#xff1a;架構愿景與業務架構設計 (Architecture Vision & Business Architecture) 任何架構的起點都必須是業務目標和需求。 1.1 核心業務目標 (Business Goals) 提升用戶體驗&#xff1a;用戶一次登錄&#xff0c;即可無縫訪問集團下所有子公司的官網和應用&a…

2025世界機器人大會:中國制造“人形時代”爆發

2025世界機器人博覽會8月8日在北京亦莊開幕&#xff0c;主題為“讓機器人更智慧&#xff0c;讓具身體更智能”&#xff0c;匯聚全球200余家企業、1500余件展品&#xff0c;其中首發新品超100款&#xff0c;人形機器人整機企業參展數量創同類展會之最。 除了機器人本體外&#…

Oracle 庫定期備份表結構元數據信息至目標端備份腳本

一、背景描述當前 xxx 項目 Oracle 11g RAC 庫缺少 DG&#xff0c;并且日常沒有備份&#xff0c;存在服務器或存儲損壞&#xff0c;數據或表結構存在丟失風險&#xff0c;在和項目組同步后&#xff0c;項目組反饋可對該數據庫定期備份相關結構信息&#xff0c;如存在數據丟失&a…

wps安裝后win系統瀏覽窗口無法查看

前提需要有安裝office軟件&#xff0c;PDF一般默認是瀏覽器&#xff0c;如果設置瀏覽器不行&#xff0c;就安裝Adobe Acrobat DC軟件1、按winR鍵&#xff0c;輸入regedit&#xff0c;進入注冊表2、找到路徑&#xff1a;\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current…

Qt 中最經典、最常用的多線程通信場景

實現步驟創建工作類 (Worker)&#xff1a;在工作線程中處理數據的對象。創建線程對象 (QThread)&#xff1a;用來托管工作對象。連接信號槽&#xff1a;主線程 -> 工作線程&#xff1a;連接一個主窗口發出的信號到工作對象的槽&#xff0c;用于傳遞數據。工作線程 -> 主線…

【CV 目標檢測】Fast RCNN模型①——與R-CNN區別

3.Fast RCNN模型 相比于R-CNN&#xff0c;Fast RCNN模型主要在以下三個方面進行了改進&#xff1a; 提高訓練和預測速度 R-CNN首先從測試圖中提取2000個候選區域&#xff0c;然后將這2000個候選區域分別輸入到預訓練好的CNN中提取特征。由于候選區域有大量的重疊&#xff0c;這…

Zookeeper學習

要精通 ZooKeeper&#xff0c;需要掌握其核心原理、數據模型、分布式協調機制、典型應用場景、運維管理與性能調優等方面的知識。以下是系統化的知識體系&#xff1a;? 一、ZooKeeper 基礎原理ZooKeeper 是什么 分布式協調服務&#xff0c;提供一致性、高可用的元數據管理核心…