当前位置: 首页 > news >正文

如何接收请求数据

1. 路径变量

用@PathVariable注解。

  • 不是用于传递表单数据的,而是用于在 URL 路径中传递数据。例如:/users/{userId}
  • 用于获取 URL 中的动态部分,例如:/users/123,可以通过 @PathVariable 注解在 Controller 方法中接收。
  • 示例
@GetMapping("/users/{userId}")
public User getUser(@PathVariable("userId") Long userId) {// 使用 userId 查询用户
}

2. 查询参数(Key-Value)

用@RequestParam注解。

  • 可以通过 @RequestParam 注解接收,通常用于 GET 请求中通过 URL 查询字符串传递的参数。
  • 例如:/search?name=John&age=25

示例

@GetMapping("/search")
public List<User> searchUsers(@RequestParam("name") String name, @RequestParam("age") Integer age) {// 根据 name 和 age 查询用户
}

2.1 可以省略的情况

@RequestParam 注解在接收 URL 中的查询参数或表单参数时使用。这个注解有时可以省略,但是否可以省略取决于以下几个条件:

2.1.1 参数名称与请求参数名一致

如果方法参数名与请求参数名一致,那么可以省略 @RequestParam 注解。这是因为 Spring 会自动将请求参数名与方法参数名匹配。

2.1.2 不需要指定其他属性

如果不需要指定 required(是否为必填参数)、defaultValue(默认值)等其他属性时,可以省略 @RequestParam 注解。

2.1.3 没有歧义

在没有歧义的情况下,省略 @RequestParam 是安全的。例如,当参数名清晰且不与路径变量冲突时。

3. JSON 数据

用@RequestBody注解。

  • 请求体中的 JSON 数据

    • 通常用于 POST、PUT、PATCH 请求,数据被编码为 application/json
    • JSON 数据在请求体中传递,可以通过 @RequestBody 注解接收。

    示例

@PostMapping("/create")
public void createUser(@RequestBody User user) {// 处理 JSON 数据,创建用户
}

4. 总结

4.1 常用的请求参数类型

4.1.1 json格式

application/json,传递json格式字符串,当传递的参数是属于一个对象的属性时可用此格式,比如:新增、修改时通常传递的数据是某个对象的信息就可以使用此格式。

4.1.2 表单格式

application/x-www-form-urlencoded,传递key/value串,就是在url后通过?和&进行拼接的参数,比如:

/foundations/operation/serve/page?pageNo=1&pageSize=10

传递的参数比较杂且不属于某个特定的对象时使用此格式。

4.2 接收方式

路径变量中的数据用@PathVariable注解;

请求体中的json用@RequestBody注解;

key-value用@RequestParam注解,也可以省略。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 旅行追踪和行程规划工具AdventureLog
  • Elasticsearch中修改mapping的字段类型该怎么操作
  • ★ 算法OJ题 ★ 力扣611 - 有效三角形的个数
  • 004、架构_计算节点
  • 【精选】基于Hadoop的用户网站浏览分析的设计与实现(全网最新定制,独一无二)
  • 深入解析HarmonyOS Image组件的使用与优化
  • Java设计模式【解释器模式】-行为型
  • 记一次学习--webshell绕过
  • 什么是RS485总线?
  • Redis高级---面试总结之内存过期策略及其淘汰策略
  • 基于yolov8的人头计数检测系统python源码+onnx模型+评估指标曲线+精美GUI界面
  • ctfhub-web-SSRF(FastCGI协议-DNS重绑定 Bypass)
  • Java算法之Gnome 排序
  • 基于web旅游信息平台的设计与实现
  • C语言习题~day38
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • ➹使用webpack配置多页面应用(MPA)
  • Git的一些常用操作
  • magento2项目上线注意事项
  • Shell编程
  • use Google search engine
  • web标准化(下)
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​2021半年盘点,不想你错过的重磅新书
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #HarmonyOS:Web组件的使用
  • #数据结构 笔记一
  • (16)Reactor的测试——响应式Spring的道法术器
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (ZT)薛涌:谈贫说富
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (三分钟)速览传统边缘检测算子
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (一)Linux+Windows下安装ffmpeg
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转载)利用webkit抓取动态网页和链接
  • (自用)网络编程
  • .describe() python_Python-Win32com-Excel
  • .gitattributes 文件
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET运行机制
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • [BeginCTF]真龙之力
  • [C#]使用C#部署yolov8-seg的实例分割的tensorrt模型
  • [C++进阶]map和set的相关题目
  • [CC2642r1] ble5 stacks 蓝牙协议栈 介绍和理解
  • [CocosCreator]Android的增加AndroidX的动态权限
  • [Contest20180313]灵大会议
  • [FxCop.设计规则]8. 也许参数类型应该是基类型