@RequestParam、@RequestBody、@PathVariable

1. @RequestParam

  • @RequestParam:get請求時如果用不到它的3個屬性,可以省略;其他請求如果是通過param傳送數據,必須使用該注釋
  • 要點:
    1. 可用于任何類型的請求(get請求數據在請求行中, post請求數據在請求體中)
    2. 無論時在請求行還是請求體,格式都是:username=zhangsan&password=1234&email=zhangsan@powernode.com

屬性

  • value: 不解釋看代碼
  • defaultValue :設置默認值
// 發送請求
request.get("/user"{params:{	// 必須使用paramspeopleAge: 20,	}
})@GetMapping("/user")
// value屬性 :指明發送時url中的名字,和這里的名字做對應,peopleAge對應 age
public String getUser(@RequestParam(value = "peopleAge", defaultValue = "18") int age) {return "Your age is " + age;
}
  • required :是否必須傳
@GetMapping("/user")
public String getUser(@RequestParam(required = false) String email) {if (email != null) {return "Your email is " + email;} else {return "No email provided.";}
}

2. @RequestBody

  • @RequestBody: 最主要的用處,post請求時前端發送json格式字符串,后端用類接收
  • 用法
    1. 可用于非get請求的其他請求
    2. 前端發送的是json字符串,后端用類接收
    3. @RequestBody不可以省略
    4. required屬性:是否必需傳
@PostMapping("/user/{id}")
public String updateUser(@RequestBody User user) {// 根據id更新用戶信息return "User updated successfully.";
}
  • 請求
import axios from 'axios';// 假設后端接口地址
const baseUrl = 'http://localhost:8080';// 要發送的數據
const userData = {// 假設User類有name和age屬性,根據實際情況修改name: 'John Doe',age: 30
};// 發送POST請求的函數
const sendPostRequest = async () => {try {//  雖然沒有在請求頭中指明發送的是json格式,只要使用post請求,就會自動對第二個參數進行json格式化const response = await axios.post(`/user`, userData);console.log('請求成功', response.data);} catch (error) {console.error('請求失敗', error);}
};// 調用函數發送請求
sendPostRequest();

3. @PathVariable

  • @PathVariable:發送Rest風格請求時使用

作用:

  1. Rest風格請求的占位符
  2. 可用于任何請求中,get、post、put等等
  3. 也有required 屬性

1. 基本使用

/users/123 //請求的url@GetMapping("/users/{userId}")
public String getUserById(@PathVariable("userId") Long id) {// 根據id從數據庫或其他數據源獲取用戶信息return "User with id " + id + " retrieved successfully.";
}
/orders/100/items/200 // 親求的url,多個@GetMapping("/orders/{orderId}/items/{itemId}")
public String getOrderItem(@PathVariable("orderId") Long orderId, @PathVariable("itemId") Long itemId) {// 根據orderId和itemId獲取訂單中的商品信息return "Retrieving item " + itemId + " from order " + orderId;
}

2. 與正則表達式配合使用

@GetMapping("/users/{userId:\\d+}")
public String getUserById(@PathVariable("userId") String userId) {// 這里可以確保userId是數字格式return "User with id " + userId + " retrieved successfully.";
}

4. 遇到的其他情況

特別注意順序,發送時參數的順序和接收時參數的順序

1. get請求發送數據,后端用類接收

  • get請求發送了4個參數
  request.get("/admin/list",{params:{currentPage:1,pageSize:10,username:"zhangsan",name:"張三",}})
  • controller接收
public class AdminController {@GetMapping("/list")public Result<PageResult> getAdminList(// 參數按順序接收,這里設置了默認值@RequestParam(defaultValue = "1") Integer currentPage,@RequestParam(defaultValue = "10") Integer pageSize,// 第3個和第4個參數賦值給了admin類對象Admin admin) {PageInfo<Admin> adminList = adminService.getAdminList(currentPage, pageSize);return PageResult.ok(adminList);}
}

2. Post請求中@RequestParam和@RequestBody 一起使用

import axios from 'axios';
const baseUrl = 'http://localhost:8080'; 
const sendPostRequest = async () => {try {const response = await axios.post(`/user`, {// 請求體參數userInfo: {name: 'John Doe',age: 30}}, {// 查詢參數params: {id: 123}});console.log('請求成功', response.data);} catch (error) {console.error('請求失敗', error);}
};sendPostRequest();
@PostMapping("/user")
public String saveUser(@RequestParam("id") Long id,@RequestBody UserInfo userInfo) {// 保存用戶邏輯return "User saved successfully.";
}

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

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

相關文章

麒麟系統利用pycharm生成deb文件

在麒麟系統&#xff08;Kylin OS&#xff09;上使用 PyCharm 進行 Python 開發并生成 .deb 可安裝軟件包&#xff0c;可以按照以下步驟進行操作&#xff1a; 1. 準備工作 安裝 PyCharm&#xff1a;確保已經在麒麟系統上安裝了 PyCharm&#xff0c;可以使用官方提供的安裝包進…

微信小程序接入DeepSeek模型(火山方舟),并在視圖中流式輸出

引言&#xff1a; DeepSeek&#xff0c;作為一款先進的自然語言處理模型&#xff0c;以其強大的文本理解和生成能力著稱。它能夠處理復雜的文本信息&#xff0c;進行深度推理&#xff0c;并快速給出準確的回應。DeepSeek模型支持流式處理&#xff0c;這意味著它可以邊計算邊輸…

釘釘(excel)能讓表格中不是‘北京’的字符串自動加亮顯示(方便查看)以及隔行填充嚴顏色是斑馬色(方便查看)嘛

在釘釘在線表格中&#xff0c;雖然功能相對Excel有所簡化&#xff0c;但仍然可以通過條件格式實現對特定內容的高亮顯示。以下是具體步驟&#xff1a; 一、在釘釘在線表格中設置條件格式 1. 打開釘釘在線表格 登錄釘釘&#xff0c;進入“釘釘在線表格”應用。 打開你需要操作…

Windows根據文件名批量在文件夾里查找文件并復制出來,用WPF實現的詳細步驟

項目前言 在日常工作和生活中&#xff0c;我們常常會遇到需要從大量文件中根據文件名批量查找特定文件并復制到指定位置的情況。手動一個個查找和復制文件不僅效率低下&#xff0c;還容易出錯。使用 Windows Presentation Foundation (WPF) 可以創建一個用戶友好的圖形界面應用…

PHP語法基礎

PHP語法基礎 一&#xff0c;變量 在PHP中&#xff0c;變量是存儲數據的容器&#xff0c;其靈活性和動態類型系統是PHP的核心特性之一。以下是PHP變量的詳細解析&#xff0c;涵蓋聲明、作用域、類型轉換及最佳實踐&#xff1a; 1. 變量基礎 聲明與命名規則 無需顯式聲明類型&…

Java 并發編程——BIO NIO AIO 概念

參考 Java 并發編程——BIO NIO AIO 概念 阻塞與非阻塞、同步與異步概念 系統調用、緩存、物理設備阻塞與非阻塞同步與異步 四種主要的 IO 模型 同步阻塞 IO同步非阻塞 IOIO 多路復用異步 IO select&#xff0c;poll&#xff0c;epoll 系統調用命令

探索Maas平臺與阿里 QWQ 技術:AI調參的魔法世界

摘要&#xff1a;本文介紹了藍耘 Maas 平臺在人工智能領域的表現及其核心優勢&#xff0c;包括強大的模型支持、高效的資源調度和友好的操作界面。文章還探討了藍耘 Maas 平臺與阿里 QWQ 技術的融合亮點及應用拓展實例&#xff0c;并提供了調參實戰指南&#xff0c;最后對藍耘 …

Python 實現大文件的高并發下載

項目背景 基于一個 scrapy-redis 搭建的分布式系統&#xff0c;所有item都通過重寫 pipeline 存儲到 redis 的 list 中。這里我通過代碼演示如何基于線程池 協程實現對 item 的中文件下載。 Item 結構 目的是為了下載 item 中 attachments 保存的附件內容。 {"crawl_tim…

MySQL與Canal、RabbitMQ集成指南

MySQL 部分 1. 查看是否開啟 binlog MySQL 8 默認開啟 binlog。可以通過以下命令查看是否開啟&#xff1a; SHOW VARIABLES LIKE log_bin;如果返回結果為 ON&#xff0c;則表示 binlog 已開啟。 Variable_nameValuelog_binON 2. 若未開啟 binlog&#xff0c;則需手動配置 …

X86 RouterOS 7.18 設置筆記十:上海電信IPTV使用msd_lite實現組播轉單撥

X86 j4125 4網口小主機折騰筆記五&#xff1a;PVE安裝ROS RouterOS X86 RouterOS 7.18 設置筆記一&#xff1a;基礎設置 X86 RouterOS 7.18 設置筆記二&#xff1a;網絡基礎設置(IPV4) X86 RouterOS 7.18 設置筆記三&#xff1a;防火墻設置(IPV4) X86 RouterOS 7.18 設置筆記四…

Select 選擇器選項位置偏移的解決方案

Select 選擇器選項位置偏移的解決方案 在使用 Select 組件時&#xff0c;可能會遇到下拉選項位置偏移的問題。這通常由 CSS 樣式、組件 渲染方式 或 父級元素的影響 造成。以下是詳細的排查步驟和解決方案。 一、常見原因 position: relative; 或 overflow: hidden; 影響下拉菜…

LeetCode 解題思路 17(Hot 100)

解題思路&#xff1a; 找到鏈表中點&#xff1a; 使用快慢指針法&#xff0c;快指針每次移動兩步&#xff0c;慢指針每次移動一步。當快指針到達末尾時&#xff0c;慢指針指向中點。遞歸分割與排序&#xff1a; 將鏈表從中點處分割為左右兩個子鏈表&#xff0c;分別對這兩個子…

數學建模歷程之初見

第一次接觸數學建模是在上大學前&#xff0c;當時只是聽過。起源于我在大學的老鄉群里聊天&#xff0c;由于當時年輕有點傻&#xff0c;說的話太多了&#xff0c;什么都問哈哈哈哈哈。 后來有個學長從老鄉群里加我&#xff0c;問我怎么話那么多&#xff0c;你們懂當時對我幼小…

Python 科學計算與機器學習入門:NumPy + Scikit-Learn 實戰指南

Langchain系列文章目錄 01-玩轉LangChain&#xff1a;從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊&#xff1a;四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain&#xff1a;從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

「自動駕駛背后的數學:從傳感器數據到控制指令的函數嵌套」—— 揭秘人工智能中的線性函數、ReLU 與復合函數

引言 自動駕駛技術是人工智能領域的一個重要應用&#xff0c;其核心在于如何將傳感器數據轉化為車輛控制指令。這一過程涉及大量的數學知識&#xff0c;包括線性函數、激活函數&#xff08;如 ReLU&#xff09;以及復合函數的嵌套使用。本文將深入探討自動駕駛中的數學原理&am…

詳解SQL數據定義功能

數據定義 1. 數據庫模式&#xff08;Schema&#xff09;的定義與刪除定義模式刪除模式 2. 基本表的定義、修改與刪除定義表約束1. NOT NULL 約束2. DEFAULT 約束3. UNIQUE 約束4. PRIMARY KEY 約束多列主鍵示例&#xff1a; 5. FOREIGN KEY 約束6. CHECK 約束7. AUTO_INCREMENT…

Redis超高并發分key實現

Redis扛并發的能力是非常強的&#xff0c;所以高并發場景下經常會使用Redis&#xff0c;但是Redis單分片的寫入瓶頸在2w左右&#xff0c;讀瓶頸在10w左右&#xff0c;如果在超高并發下即使是集群部署Redis&#xff0c;單分片的Redis也是有可能扛不住的&#xff0c;如下圖所示&a…

AI Agent 時代開幕-Manus AI與OpenAI Agent SDK掀起新風暴

【本周AI新聞: AI Agent 時代開幕-Manus AI與OpenAI Agent SDK掀起新風暴】 https://www.bilibili.com/video/BV1bkQyYCEvQ/?share_sourcecopy_web&vd_source32ed33e1165d68429b2e2eb4749f3f26 最近AI圈子里最火的話題非Manus莫屬&#xff01;這款由中國武漢創業公司“蝴…

多時間尺度的配電網深度強化學習無功優化策略的Python示例代碼框架

以下是一個簡單的多時間尺度的配電網深度強化學習無功優化策略的Python示例代碼框架&#xff0c;用于幫助你理解如何使用深度強化學習&#xff08;以深度Q網絡 DQN 為例&#xff09;來處理配電網的無功優化問題。在實際應用中&#xff0c;你可能需要根據具體的配電網模型和需求…

劍指 Offer II 081. 允許重復選擇元素的組合

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20081.%20%E5%85%81%E8%AE%B8%E9%87%8D%E5%A4%8D%E9%80%89%E6%8B%A9%E5%85%83%E7%B4%A0%E7%9A%84%E7%BB%84%E5%90%88/README.md 劍指 Offer II 081. 允許重復選擇…