@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.rhkb.cn/news/35954.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EDID读取学习

简介 Video BIOS可以被认为是一个具有独立硬件抽象层的操作系统。它不会阻止或监视操作系统、应用程序或设备驱动程序对硬件的直接访问。虽然不推荐,但一些DOS应用程序确实可以改变基本的硬件设置,而根本不需要通过视频BIOS。大多数现代应用程序和操作系统都避免直接使用硬件…

基于SpringBoot的在线拍卖系统

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…

Android audio(8)-native音频服务的启动与协作(audiopolicyservice和audioflinger)

音频策略的构建 1、概述 2、AudiopolicyService 2.1 任务 2.2 启动流程 2.2.1 加载audio_policy.conf&#xff08;xml&#xff09;配置文件 2.2.2 初始化各种音频流对应的音量调节点 2.2.3 加载audio policy硬件抽象库 2.2.4设置输出设备 ps:audiopatch流程简介 2.2.5打开输出设…

Springdoc 全部注解一文解释清楚

文章目录 **1. 核心注解****Tag-Class类上** **2. 方法级别注解****Operation-方法描述****ApiResponse 和 ApiResponses-方法的返回结果** **3. 参数相关注解****Parameter-方法参数****Parameters方法参数&#xff08;单个&#xff09;** **4. 实体模型相关注解****Schema-描…

Git的基本指令

一、回滚 1.git init 在项目文件夹中打开bash生成一个.git的子目录&#xff0c;产生一个仓库 2.git status 查看当前目录下的所有文件的状态 3.git add . 将该目录下的所有文件提交到暂存区 4.git add 文件名 将该目录下的指定文件提交到暂存区 5.git commit -m 备注信…

通过qemu仿真树莓派系统调试IoT固件和程序

通过qemu仿真树莓派系统调试IoT固件和程序 本文将介绍如何使用 QEMU 模拟器在 x86 架构的主机上运行 Raspberry Pi OS&#xff08;树莓派操作系统&#xff09;。我们将从下载镜像、提取内核和设备树文件&#xff0c;到启动模拟环境&#xff0c;并进行一些常见的操作&#xff0…

DeepSeek大模型在政务服务领域的应用

DeepSeek大模型作为国产人工智能技术的代表&#xff0c;近年来在政务服务领域的应用呈现多点开花的态势。通过多地实践&#xff0c;该技术不仅显著提升了政务服务的效率与智能化水平&#xff0c;还推动了政府治理模式的创新。以下从技术应用场景、典型案例及发展趋势三个维度进…

【HarmonyOS Next之旅】DevEco Studio使用指南(三)

目录 1 -> 一体化工程迁移 1.1 -> 自动迁移 1.2 -> 手动迁移 1.2.1 -> API 10及以上历史工程迁移 1.2.2 -> API 9历史工程迁移 1 -> 一体化工程迁移 DevEco Studio从 NEXT Developer Beta1版本开始&#xff0c;提供开箱即用的开发体验&#xff0c;将SD…

FPGA中级项目4——DDS实现

FPGA中级项目4——DDS实现 DDS简介 DDS&#xff08;直接数字频率合成器&#xff0c;Direct Digital Frequency Synthesis&#xff09;是一种基于数字信号处理技术的频率合成方法&#xff0c;广泛应用于通信、雷达、仪器仪表等领域。在 FPGA中实现 DDS 具有灵活性高、集成度强、…

SAP的WPS导出找不到路径怎么办;上载报错怎么办

一.打开注册编辑器 二.输入以下地址 计算机\HKEY_CLASSES_ROOT\ExcelWorksheet\Protocol\StdFileEditing\Server 去除掉EXE后面的命令即可 二&#xff1a;WPS上载文件没反应怎么办 如何切换整合模式或多组件模式-WPS学堂 根据官方操作把整合模式改成多组件模式

STM32 DAC详解:从原理到实战输出正弦波

目录 一、DAC基础原理1.1 DAC的作用与特性1.2 DAC功能框图解析 二、DAC配置步骤2.1 硬件配置2.2 初始化结构体详解 三、DAC数据输出与波形生成3.1 数据格式与电压计算3.2 正弦波生成实战3.2.1 生成正弦波数组3.2.2 配置DMA传输3.2.3 定时器触发配置 四、常见问题与优化建议4.1 …

MVC_Publish-Subscriber 模式中的事件处理程序

MVC_Publish-Subscriber 模式中的事件处理程序 MVC 中的事件处理&#xff1a;发布者-订阅者模式 程序启动时&#xff0c;controlRecipes将被传入addHandlerRender; addHandlerRender会侦听事件&#xff08;addEventListener&#xff09;,并使用controlRecipes作为回调&#xf…

网络华为HCIA+HCIP 以太网链路聚合与交换机堆叠、集群

网络可靠性 网络的可靠性指当设备或者链路出现单点或者多点故障时保证网络服务不间断的能力。网络的可靠性可以从单板、设备、链路多个层面实现。 单板可靠性 以S12700E-8为例&#xff0c;设备提供8个线路板槽位、4个交换网板槽位、2个主控板槽位、6个电源模块槽位、4个风扇…

施耐德PLC仿真软件Modbus tcp通讯测试

安装仿真软件&#xff1a;EcoStruxure™ Control Expert - PLC 仿真器 下载地址&#xff1a;https://www.schneider-electric.cn/zh/download/document/EIO0000001719/ 配置CPU&#xff1a; 切换至仿真模式&#xff0c;系统托盘中出现仿真器图标 新建变量test&#xff0c;地址…

LabVIEW棉花穴播器排种自动监测系统

一、项目背景与行业痛点 1. 农业需求驱动 我国棉花主产区&#xff0c;种植面积常年超250万公顷&#xff0c;传统人工播种存在两大核心问题&#xff1a; 效率瓶颈&#xff1a;人均日播种面积不足0.5公顷&#xff0c;难以匹配规模化种植需求&#xff1b; 精度缺陷&#xff1a;人…

2024浙江大学计算机考研上机真题

2024浙江大学计算机考研上机真题 2024浙江大学计算机考研复试上机真题 2024浙江大学计算机考研机试真题 2024浙江大学计算机考研复试机试真题 历年浙江大学计算机复试上机真题 历年浙江大学计算机复试机试真题 2024浙江大学计算机复试上机真题 2024浙江大学计算机复试机试真题 …

GPU视频编解码:Jetson VPI+multimedia_api视频编解码入门(一)

目录 一.Pipline与工具栈 二.硬件设备概况 三.GPU视频编解码框架 四.VPI编译使用实例 五. jetson_multimedia_api编译使用实例 一.Pipline与工具栈 二.硬件设备概况 三.GPU视频编解码框架 jetson设备目前不支持VPF框架&#xff0c;关于VPF的使用我在下节PC段使用X86进行安…

设计模式-对象创建

对象创建 前言1. Factory Method1.1 模式介绍1.2 模式代码1.2.1 问题代码1.2.2 重构代码 1.3 模式类图1.4 要点总结 2. Abstract Factory2.1 模式介绍2.2 模式代码2.2.1 问题代码2.2.2 重构代码 2.3 模式类图2.4 要点总结 3. Prototype3.1 模式介绍3.2 模式代码3.3 模式类图3.4…

【大模型基础_毛玉仁】2.6 非 Transformer 架构

更多内容&#xff1a;XiaoJ的知识星球 目录 2.6 非 Transformer 架构2.6.1 状态空间模型 SSM1&#xff09;SSM&#xff08;State Space Model&#xff09;2&#xff09;RWKV&#xff08;Receptance Weighted Key Value&#xff09;3&#xff09;Mamba 2.6.2 训练时更新TTT(Test…

压测实战 | 微信小程序商城 “双 11” 的压测实践

背景 某全球知名珠宝品牌&#xff0c;始终以创新驱动零售变革。随着全渠道战略的深化&#xff0c;其小程序官方商城逐渐成为品牌私域流量的核心阵地&#xff0c;不仅承载了线上销售、会员运营等功能&#xff0c;同时还与其内部系统打通&#xff0c;如会员管理系统、人力资源系…