Spring 处理 HTTP 请求参数注解

ops/2024/10/20 15:59:27/
http://www.w3.org/2000/svg" style="display: none;">

@RequestParam、@RequestBody、@RequestPart 对比

  1. 请求体格式:
  • @RequestParam:application/x-www-form-urlencoded
  • @RequestBody:application/json、application/xml
  • @RequestPart:multipart/form-data
  1. 入参类型:
  • @RequestParam:基本类型、String、MultipartFile
  • @RequestBody:k-v
  • @RequestPart:k-v,MultipartFile
  1. 注解属性
  • @RequestParam:value/name、required、defaultValue
  • @RequestBody:required
  • @RequestPart:value/name、required

匹配解析器:

java">/*** Find a registered {@link HandlerMethodArgumentResolver} that supports* the given method parameter.*/
@Nullable
private HandlerMethodArgumentResolver getArgumentResolver(MethodParameter parameter) {HandlerMethodArgumentResolver result = this.argumentResolverCache.get(parameter);if (result == null) {for (HandlerMethodArgumentResolver resolver : this.argumentResolvers) {if (resolver.supportsParameter(parameter)) {result = resolver;this.argumentResolverCache.put(parameter, result);break;}}}return result;
}

@RequestHeader、@RequestAttribute、@PathVariable、@CookieValue、@SessionAttribute 对比

作用:
@RequestHeader:用于接收请求头中的参数
@RequestAttribute:用于接收上一个请求中设置的参数
@PathVariable:用于接收路径中的参数
@CookieValue:用于接收 Cookie 中的参数
@SessionAttribute:用于接收 Session 中的参数


用例:

java">// 1 @RequestParam 
// 1.1 指定属性名
@GetMapping("/test")
public Result test(@RequestParam("param") String param);// 1.2 指定非必传,默认是必传
@GetMapping("/test")
public Result test(@RequestParam(value = "param", required = false) String param);// 2 @RequestBody
@PostMapping("/test")
public Result test(@RequestBody Map<String, Object> params);// 3 @RequestPart
@PostMapping("/test")
public Result test(@RequestParam("file") MultipartFile file, @RequestPart("params") Map<String, Object> params);// 4 @RequestHeader
@GetMapping("/test")
public Result test(@RequestHeader("param") String param);// 5 @RequestAttribute
@GetMapping("/test")
public Result test(@RequestAttribute("param") String param);// 6 @PathVariable
@GetMapping("/test/{param}")
public Result test(@PathVariable("param") String param);// 7 @CookieValue
@GetMapping("/test")
public Result test(@CookieValue("param") String param);// 8 @SessionAttribute
@GetMapping("/test")
public Result test(@SessionAttribute("param") String param);

http://www.ppmy.cn/ops/27248.html

相关文章

【yolov8yolov5驾驶员抽烟-打电话-喝水-吃东西检测】

YOLO算法DMS驾驶员抽烟-打电话-喝水-吃东西检测数据集 YOLOv8和YOLOv5是深度学习中用于目标检测的先进算法&#xff0c;它们在实时性和准确性方面表现出色&#xff0c;适用于各种视频监控和图像处理应用&#xff0c;包括驾驶员行为监测。这些算法通过单次前向传播即可预测图像…

探索潜力:中心化交易所平台币的对比分析

核心观点 平台币在过去一年里表现差异显著&#xff1a; 在过去的一年里&#xff0c;只有少数几个平台币如BMX、BGB和MX的涨幅超过了100%。相比之下&#xff0c;由于市值较高&#xff0c;BNB和OKB的涨幅相对较低。 回购和销毁机制在平台币价值中起决定性作用&#xff1a; 像M…

使用Nuxt3框架搭建基础项目

Nuxt3安装 基础配置: Node.js** - v18.0.0版本以上 , 可以结合fnm工具切换node版本 安装nuxt3命令 打开vscode或者控制台去到项目文件夹输入: npx nuxi@latest init <project-name> 国内执行这行代码,即使科学上网也会有问题 ⚠️ 安装Nuxt3报错 安装过程的报错 Fa…

Python 操作PDF图片 – 添加、替换、删除PDF中的图片

PDF文件中的图片可以丰富文档内容&#xff0c;提升用户的阅读体验。除了在PDF中添加图片外&#xff0c;有时也需要替换或删除其中的图片&#xff0c;以改进视觉效果或更新信息。文本将提供以下三个示例&#xff0c;介绍如何使用Python 操作PDF文件中的图片&#xff1a; 目录 …

【35分钟掌握金融风控策略10】风控策略部署2

目录 策略部署 决策引擎系统简介 基于决策引擎进行策略部署 策略部署结果验证 知识点补充 测试验证 回溯比对 策略部署 策略主要部署在决策引擎上进行风险决策&#xff0c;接下来分别介绍决策引擎系统&#xff0c;以及基于决策引擎进行策略部署的相关内容。 决策引擎系…

SpringCloud系列(13)--Eureka服务名称修改和服务IP显示

前言&#xff1a;在上一章节中我们把服务提供者做成了集群&#xff0c;而本章节则是一些关于服务信息的配置&#xff0c;这部分知识对集群整体影响不大&#xff0c;不过最好还是掌握&#xff0c;毕竟万一有用到的地方呢 1、修改服务的名称 有时候我们想要修改服务的名称&#…

【前端】VUE项目创建

在所需文件夹中打开cmd命令行窗口&#xff0c;输入vue ui 进入web可视化界面选择创建新项目 根据需求依次完成下列选择&#xff0c;下列是参考配置&#xff0c;完成后点击创建项目即可 最终显示完成

SGP.31-10

Annex B eIM Configuration Scenarios (Informative) B.1 eIM Configuration Performed by the EUM 在文档的“附录 B eIM 配置场景&#xff08;信息性&#xff09;”部分&#xff0c;提供了关于 eIM&#xff08;eSIM IoT 远程管理器&#xff09;配置的不同场景的描述。这…