前端傳參+后端接參對照

? Java 后端參數接收注解 & 前端傳參格式對照

后端注解前端 Content-Type前端傳參方式說明
@RequestParamapplication/x-www-form-urlencodedURL參數 / form表單提交 / Postman form-data常用于 key=value 形式的參數;適合少量簡單參數
@RequestParamURL拼接/api/test?id=123&name=abcGet/Post 請求都行,參數在 query string
@PathVariable不關心 Content-TypeURL 路徑參數@GetMapping("/api/test/{id}"),URL 要寫 /api/test/123
@RequestBodyapplication/jsonJSON 格式,raw 模式,post body 傳參專門接收 JSON 格式,適合復雜對象、數組傳遞
@ModelAttributeapplication/x-www-form-urlencodedmultipart/form-datakey=value 的 form-data,或表單提交接收 form-data 或表單數據,會自動封裝為對象
@RequestPartmultipart/form-data文件上傳,配合 JSON、表單混合傳遞用于上傳文件或文件 + 數據的組合提交(MultipartFile 接收)
MultipartFilemultipart/form-dataform-data 方式上傳文件專門處理文件上傳
HttpServletRequest / HttpServletResponse不關心 Content-Type一般用于文件下載、復雜定制化請求原生的請求、響應操作,常見于流下載、session處理

? 詳細解釋

1?? @RequestParam

@GetMapping("/test")
public String test(@RequestParam String name, @RequestParam Integer age)

前端傳參

  • GET: /test?name=Tom&age=12
  • POST: application/x-www-form-urlencoded
    name=Tom&age=12
    

2?? @PathVariable

@GetMapping("/test/{id}")
public String test(@PathVariable Long id)

前端傳參

  • URL: /test/123

3?? @RequestBody

@PostMapping("/test")
public String test(@RequestBody User user)

前端傳參

  • POST: application/json
{"name": "Tom","age": 12
}

常用于前端傳 JSON 對象、數組
🚨 如果你忘記 Content-Type: application/json,Spring 會報錯!


4?? @ModelAttribute

@PostMapping("/test")
public String test(@ModelAttribute User user)

前端傳參

  • application/x-www-form-urlencoded
name=Tom&age=12
  • multipart/form-data(主要用在有文件上傳時)

5?? @RequestPart

@PostMapping("/upload")
public String upload(@RequestPart("file") MultipartFile file, @RequestPart("user") String userJson)

前端傳參

  • multipart/form-data
  • 文件 + JSON 同時上傳
    (需要自己在前端 form-data 里傳 JSON 字符串,再后端反序列化)

6?? MultipartFile

@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file)

前端傳參

  • multipart/form-data
    直接在 form-data 里傳文件。

? 常見前端傳參方式 & 后端適配

前端請求Content-Type后端接收注解
URL傳參 /api?id=1&name=Tomapplication/x-www-form-urlencoded@RequestParam / @PathVariable
表單提交 key=valueapplication/x-www-form-urlencoded@RequestParam / @ModelAttribute
JSON {"id":1,"name":"Tom"}application/json@RequestBody
文件上傳multipart/form-dataMultipartFile / @RequestPart
文件 + JSONmultipart/form-data@RequestPart

? 總結下選擇建議!

場景用法
簡單的參數@RequestParam + application/x-www-form-urlencoded
路徑變量(RESTful)@PathVariable
復雜對象/數組(JSON)@RequestBody + application/json
表單傳對象@ModelAttribute + application/x-www-form-urlencoded
文件上傳或混合參數MultipartFile / @RequestPart + multipart/form-data
文件下載/流操作HttpServletResponse

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

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

相關文章

計算機網絡的框架結構

計算機網絡課程知識體系框架 一、計算機網絡基礎概念 1.1 網絡組成要素 端系統(主機、服務器)通信鏈路(有線/無線介質)交換設備(路由器、交換機)協議體系(TCP/IP協議簇) 1.2 網絡…

塔能智慧物聯節能方案:點亮城市,賦能工廠

在全球積極倡導節能減排、綠色發展的時代背景下,塔能(江蘇)科技有限公司憑借其創新的智慧物聯節能一體化解決方案,在城市照明和工廠節能領域取得了顯著成果。該方案不僅為城市的夜晚帶來了明亮且節能的照明,還為工廠的…

Laravel框架下通過DB獲取數據并轉為數組的方法

在Laravel框架中,獲取數據庫信息并將其轉換為數組是一種常見的操作,特別是在處理數據導出、API響應等場景中。Laravel提供了簡潔而強大的數據庫抽象層,旨在簡化這類操作。接下來,我們將探討幾種在Laravel中通過數據庫抽象層&#…

pytorch小記(九):pytorch中創建指定形狀的張量: torch.empty

pytorch小記(九):pytorch中創建指定形狀的張量: torch.empty 詳細解釋1. 基本功能2. 語法3. 示例代碼示例 1:創建一個 5 的未初始化張量示例 2:創建一個 23 的未初始化張量示例 3:指定數據類型和設備 4. 注…

Linux cgroup cpuset

cpuset.c 是 Linux cgroup 的 cpuset 子系統的核心實現,這個文件的主要作用是: 實現 cgroup 的 cpuset 子系統管理進程的 CPU 和內存資源訪問權限提供 CPU 和內存節點的獨占功能支持層級化的資源管理提供用戶空間接口來配置和查看資源限制 關鍵數據結構…

Tailwind CSS 學習筆記(一)

一、簡介 Tailwind CSS是一個工具優先的CSS 框架,只需書寫HTML 代碼,無需書寫CSS,即可快速構建美觀的網站。 二、優點 1、簡潔、規整,避免了隨意取類名 Tailwind CSS 的工具類(Utility classes) 能夠為你提供一套約束系統,避免讓你的樣式表中出現隨意的取值。它讓顏色、…

Python自動點擊器開發教程 - 支持鍵盤連按和鼠標連點

Python自動點擊器開發教程 - 支持鍵盤連按和鼠標連點 這里寫目錄標題 Python自動點擊器開發教程 - 支持鍵盤連按和鼠標連點項目介紹開發環境安裝依賴核心代碼解析1. 鍵盤模擬實現2. 鼠標點擊實現 開發要點使用說明注意事項優化建議打包發布項目源碼開發心得參考資料成品工具 項…

Cursor插件市場打不開解決

問題現象: cursor搜索插件的時候提示錯誤,無法搜索安裝插件 error while fetching extensions.failed to fetch 問題原因 cursor默認安裝使用的并不是vs code的插件市場,國內網絡有時候打不開 解決 修改插件市場地址并重啟cursor 打開cur…

【DeepSeek】本地部署DeepSeek的完整教程(Ollama+Docker+Open WebUI)

本地部署DeepSeek的完整教程 文章目錄 本地部署DeepSeek的完整教程寫在前面技術需求詳細步驟一. 安裝Ollama軟件二. 安裝DeepSeek-R1模型三. 安裝Docker軟件四. 配置Web UI界面問題解決1. 打開`docker desktop`時,一直顯示`Docker Engine stopped`2. 用`Docker`拉取`Open WebU…

Java創造型模式之原型模式詳解

設計模式是面向對象設計中的一種標準方法,用于解決常見的設計問題。原型設計模式(Prototype Pattern)是23種經典設計模式之一,屬于創建型模式,它允許通過復制現有對象來創建新對象,而不是通過構造函數或工廠…

python-leetcode 54.全排列

題目: 給定不含重復數字的數組nums,返回其所有可能的全排列,可以按任意順序返回答案 回溯法 一種通過探索所有可能的候選解來找出所有的解的算法。如果候選解被確認不是一個解(或者至少不是最后一個解),回溯算法會通…

python局部變量和全局變量

文章目錄 1.局部變量和全局變量2.局部變量2.1 局部變量的作用2.2 局部變量的生命周期 3. 全局變量3.1 函數不能直接修改全局變量的引用3.2 在函數內部修改全局變量的值3.3 全局變量定義的位置3.4 全局變量命名的建議 1.局部變量和全局變量 (1)局部變量 …

華為中小型企業項目案例

實驗目的(1) 熟悉華為交換機和路由器的應用場景 (2) 掌握華為交換機和路由器的配置方法 實驗拓撲實驗拓撲如圖所示。 華為中小型企業項目案例拓撲圖 實驗配置市場部和技術部的配置創建VLANLSW1的配置 [LSW1]vlan batch 10 20 [LSW1]q…

深度學習-簡介

一、幾個概念 (1)what is ai including? 看一張圖: 這里注意機器學習和深度學習的關系 (2)機器學習和模式識別有什么區別? 和機器學習同領域的有一個詞叫做模式識別,二者有什么區別呢? 機…

Unity小框架之單例模式基類

單例模式(Singleton Pattern)是一種常用的創建型設計模式,其核心目標是確保一個類只有一個實例,并提供一個全局訪問點。它常用于需要控制資源訪問、共享配置或管理全局狀態的場景(如數據庫連接池、日志管理器、應用配置…

安裝 Powerlevel10k 及 Oh My Zsh 的使用

1. 簡介 Powerlevel10k 是 Oh My Zsh 最流行的終端主題,它不僅美觀,還提供 Git 狀態顯示、命令執行時間、網絡狀態、Python 虛擬環境指示等 實用功能。相比其他主題,Powerlevel10k 速度更快、可定制性更強。 本教程將詳細介紹如何安裝 Powe…

verilog有符號數處理摘要

在FPGA設計中,一般的算數運算符都是按照無符號數進行的。那么需要有符號數計算的時候,該怎么辦呢? 很久很久以前也就是Verilog-2001還沒有出現時,是手動操作的,也就是說,對于一個8位的無符號數&#xff0c…

在IDEA中連接達夢數據庫:詳細配置指南

達夢數據庫(DM Database)作為國產關系型數據庫的代表,廣泛應用于企業級系統開發。本文將詳細介紹如何在IntelliJ IDEA中配置并連接達夢數據庫,助力開發者高效完成數據庫開發工作。 準備工作 1. 下載達夢JDBC驅動 訪問達夢官方資…

app.config.globalProperties

目錄 一:基礎使用 1、簡介 2、使用 3、打印結果: 二:封裝 1、創建一個.ts文件(utils/msg.ts) 2、在main.ts中全局注冊 3、在頁面中使用 4、打印結果 一:基礎使用 1、簡介 app.config.globalProperties 是 Vue 3 應用實例(app)的一個配置屬性&…

openai 標準化協議 Structured Outputs 具體示例教程

Structured Outputs 具體示例教程 場景:個人財務管理助手 假設我們要構建一個 AI 助手,幫助用戶記錄和管理個人財務支出。用戶可以輸入自然語言描述(如“昨天我花了50元買了午餐”),助手將提取關鍵信息并以結構化 JS…