前端的請求協議對應java的接收

  1. application/json

    前端發送 JSON 數據,后端用 @RequestBody 接收并自動映射為 Java 對象。

    前端示例(Axios):
    axios.post("/api/user", { name: "張三", age: 20 }, {headers: { "Content-Type": "application/json" }
    });

    后端 Controller:

    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RestController;@RestController
    public class UserController {// 定義實體類接收 JSON 數據static class User {private String name;private Integer age;// getter + setter}@PostMapping("/api/user")public String createUser(@RequestBody User user) {return "接收數據:" + user.getName() + ", " + user.getAge();}
    }
  2. application/x-www-form-urlencoded

    前端發送表單編碼數據,后端用?@RequestParam?或實體類接收。

    前端示例(Axios):
    axios.post("/api/login", "username=admin&password=123", {headers: { "Content-Type": "application/x-www-form-urlencoded" }
    });

    后端 Controller:

    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;@RestController
    public class LoginController {// 方式1:用 @RequestParam 逐個接收@PostMapping("/api/login")public String login(@RequestParam String username,@RequestParam String password) {return "登錄用戶:" + username;}// 方式2:用實體類接收(屬性名與表單 key 一致)static class LoginForm {private String username;private String password;// getter + setter}@PostMapping("/api/login2")public String login2(LoginForm form) { // 無需注解,自動映射return "登錄用戶:" + form.getUsername();}
    }
  3. multipart/form-data

    用于文件上傳,同時可傳遞其他參數,后端用 MultipartFile 接收文件。

    前端示例(Axios):
    const formData = new FormData();
    formData.append("file", file); // 文件對象
    formData.append("userId", 123); // 其他參數
    axios.post("/api/upload", formData); // 無需手動設置 Content-Type

    后端 Controller:

    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.multipart.MultipartFile;@RestController
    public class UploadController {@PostMapping("/api/upload")public String upload(@RequestParam("file") MultipartFile file, // 接收文件@RequestParam("userId") Integer userId    // 接收其他參數) {String fileName = file.getOriginalFilename();return "上傳成功:" + fileName + ",用戶ID:" + userId;}
    }
  4. text/plain

    前端發送純文本,后端用?@RequestBody?接收為字符串。

    前端示例(Axios):
    axios.post("/api/message", "Hello World", {headers: { "Content-Type": "text/plain" }
    });

    后端 Controller:

    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RestController;@RestController
    public class MessageController {@PostMapping("/api/message")public String receiveMessage(@RequestBody String message) {return "收到消息:" + message;}
    }
  5. application/xml

    需要引入 XML 解析依賴,后端用 @RequestBody 接收并映射為實體類。

    前端示例(Axios):
    const xmlData = '<user><name>張三</name><age>20</age></user>';
    axios.post("/api/user-xml", xmlData, {headers: { "Content-Type": "application/xml" }
    });

    后端 Controller:

    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RestController;@RestController
    public class XmlController {@PostMapping("/api/user-xml")public String createUserXml(@RequestBody UserXml user) {return "XML數據:" + user.getName() + ", " + user.getAge();}
    }
  6. 核心總結

    1. 前端?Content-Type?需與后端接收方式匹配,否則會導致解析失敗。
    2. JSON 格式用?@RequestBody?+ 實體類接收,最適合前后端結構化數據交互。
    3. 文件上傳必須用?multipart/form-data,后端通過?MultipartFile?處理。
    4. 根據實際場景選擇合適的?Content-Type,并確保前后端參數名一致,即可實現高效的數據交互。
    5. 表單提交默認用?application/x-www-form-urlencoded,后端可直接用實體類接收。

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

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

相關文章

esp32_hid_device 調試遇到的一些問題

nimble to windows10 22h2esp_hid_device 的keyboardReportMap在win10 22h2 csr4.0 下好像識別不了&#xff0c; Windows&#xff08;和大多數 BIOS/UEFI&#xff09;只認 6-byte key array 的 HID Keyboard 描述符。如果不是 6 個字節&#xff0c;Windows HID 驅動就會認為這不…

觀察者模式 (Observer Pattern)與幾個C++應用例子

1. 模式定義與核心思想 觀察者模式定義了一種一對多的依賴關系&#xff0c;讓多個觀察者對象同時監聽某一個主題對象。當這個主題對象的狀態發生變化時&#xff0c;它會自動通知所有觀察者對象&#xff0c;使它們能夠自動更新自己。核心思想&#xff1a; 解耦主題和觀察者。主題…

[系統架構設計師]論文(二十三)

[系統架構設計師]論文&#xff08;二十三&#xff09; 一.論軟件系統架構評估 1.架構所關注的質量屬性主要有&#xff1a;性能&#xff0c;可用性&#xff0c;安全性&#xff0c;可修改性 1&#xff09;性能。性能是指系統的響應能力&#xff0c;即要經過多長時間才能對某個事件…

攻克 Java 分布式難題:并發模型優化與分布式事務處理實戰指南

攻克 Java 分布式難題&#xff1a;并發模型優化與分布式事務處理實戰指南 開場&#xff1a;從“搖搖欲墜”到“穩如磐石”&#xff0c;你的分布式系統進階之路 你是否曾經遇到過這樣的場景&#xff1f;精心打造的電商應用&#xff0c;在大促開啟的瞬間&#xff0c;頁面響應變得…

如何在Ubuntu中刪除或修改已有的IP地址設置?

在 Ubuntu 中為新增加的網卡設置網絡時&#xff0c;需要區分原有網卡和新網卡的配置&#xff0c;確保它們可以獨立工作&#xff08;可在同一網段或不同網段&#xff09;。以下是具體步驟&#xff0c;假設你需要為新網卡配置靜態 IP&#xff08;以 192.168.1.190/24 為例&#x…

Ansible Playbook 概述與實踐案例(下)

#作者&#xff1a;張桐瑞 文章目錄四、條件判斷的實現五、循環的實現六、Jinja模板應用1、Jinja模板2、handlers組件七、角色 role1、角色介紹2、案例: 部署zabbix-agent四、條件判斷的實現 when: 條件 - hosts: appserveruser: roottasks:- name: create userAuser: nameuser…

LeetCode 100 -- Day6

1. 哈希&#xff1a;49、128&#xff08;1&#xff09;49 字母異位詞分組 -- 字典from collections import defaultdict class Solution(object):def groupAnagrams(self, strs):"""創建字典{sorted_string&#xff1a;原str}"""resultsdefaultd…

多因素認證(MFA/2FA)實戰指南:如何保護你的賬號

一、MFA/2FA 基礎認知 1. 概念辨析與演進 單因素認證&#xff08;1FA&#xff09;的局限性&#xff1a;僅依賴 “知識因素”&#xff08;如密碼&#xff09;&#xff0c;據 2024 年 Verizon 數據泄露報告&#xff0c;81% 的賬戶入侵源于密碼泄露 —— 要么是用戶使用弱密碼&a…

vue3 字符 居中顯示

在Vue 3中&#xff0c;要實現字符的居中顯示&#xff0c;你可以使用多種方法&#xff0c;具體取決于你是想在HTML元素內居中文本&#xff0c;還是在CSS樣式中實現。下面是一些常見的方法&#xff1a;1. 使用內聯樣式你可以直接在元素上使用style屬性來實現文本的居中。<temp…

《Spring Boot 進階:從零到一打造自定義 @Transactional》 ——支持多數據源、動態傳播行為、可插拔回滾策略

《Spring Boot 進階&#xff1a;從零到一打造自定義 Transactional》 ——支持多數據源、動態傳播行為、可插拔回滾策略版本&#xff1a;Spring Boot 3.2.x JDK 17一、背景與痛點痛點默認 Transactional 限制多數據源只能綁定一個 DataSourceTransactionManager多租戶無法在運…

open3D學習筆記

這里寫自定義目錄標題 核心3D數據結構 1.1 PointCloud(點云) 最近鄰搜索 (KNN/Radius) 與空間索引(KDTree/Octree) 法線估計 (Normal Estimation) 聚類分割 (基于歐氏距離的聚類) 1.2 TriangleMesh (三角形網格) 泊松表面重建 (Poisson Surface Reconstruction) 滾球法 (Ba…

gt_k_char設計模塊

是不是再fiber或者gt設計中經常遇到接收數據沒有對齊&#xff1f;是的。很多協議需要手動對齊設計。這不&#xff0c;它來了。下面是手動對齊代碼設計&#xff0c;本人在很多工程和項目中應用過&#xff0c;現在共享出來&#xff0c;給大家使用。module gt_k_char (input …

網頁版云手機怎么樣

隨著科技的不斷發展&#xff0c;云手機這一新興概念逐漸走入大眾視野&#xff0c;而網頁版云手機作為云手機的一種便捷使用方式&#xff0c;備受關注&#xff0c;下面從多個方面來探討網頁版云手機究竟怎么樣。與傳統的需要在本地設備安裝專門APP的云手機使用方式不同&#xff…

XFile v2 系統架構文檔

XFile v2 系統架構文檔 1. 概述 XFile 是一個基于 Go 語言開發的分布式文件管理系統&#xff0c;提供本地文件存儲、網絡文件共享、安全認證和多種文件操作功能。該系統采用模塊化設計&#xff0c;支持大文件分片存儲、用戶權限管理、雙因素認證等高級功能。 XFile系統的核心特…

寫一個天氣查詢Mcp Server

上篇文章&#xff0c;我們聊到了 MCP 的基本概念&#xff0c;帶大家快速入門了 MCP。 說入門應該毫不夸張&#xff0c;對于科普性質的文章&#xff0c;只需要知道這件事情的誕生背景以及有什么作用就可以了。 但是&#xff0c;如果要開發給大模型調用的 Mcp Server&#xff0…

leecode-三數之和

思路 我的思路先順序遍歷一個變量,然后使用首尾雙指針去遍歷&#xff0c;根據結果去更新另外兩個變量&#xff0c;如何和為零&#xff0c;將結果加入集合&#xff0c;但是這里要注意去重。 class Solution {public List<List<Integer>> threeSum(int[] nums) {// 排…

【數學建模】灰色關聯分析的核心步驟

文章目錄步驟一&#xff1a;讀數據步驟二&#xff1a;指標正向化步驟三&#xff1a;數據標準化步驟三&#xff1a;數據標準化步驟四&#xff1a;結果處理步驟一&#xff1a;讀數據 步驟一&#xff1a;讀數據 X xlsread(‘blind date.xlsx’); % 讀取Excel文件中的相親數據 詳…

基于高德地圖的懷化旅發精品路線智能規劃導航之旅

目錄 前言 一、2025湖南旅發 1、關于旅發 2、精品路線發布 二、高德技術賦能 1、地理編碼服務簡介 2、地理編碼服務參數介紹 3、自駕路徑規劃 4、自駕路徑規劃參數介紹 三、Java集成高德地圖服務 1、業務調用時序 2、Java地理編碼服務 3、Java路徑規劃 4、整體集成…

OpenCV實戰1.信用卡數字識別

1. 任務說明 有如下幾張信用卡&#xff0c;我們需要根據模板匹配出其中的數字&#xff0c;進行卡號的識別2. Debug源碼 cursor的debug&#xff1a;launch.json&#xff1a; {// 使用 IntelliSense 了解相關屬性。 // 懸停以查看現有屬性的描述。// 欲了解更多信息&#xff0c;請…

Spring Security 深度學習(一): 基礎入門與默認行為分析

目錄1. 引言&#xff1a;為何選擇Spring Security&#xff1f;2. 核心概念&#xff1a;認證 (Authentication) 與 授權 (Authorization)2.1 什么是認證 (Authentication)&#xff1f;2.2 什么是授權 (Authorization)&#xff1f;2.3 安全性上下文 (SecurityContext)3. Spring B…