Spring Boot中获取请求参数的几种方式

news2024/12/25 23:44:25

前言

在构建现代 Web 应用时,处理来自客户端的请求参数是不可或缺的一部分。Spring Boot作为构建微服务应用的领先框架,提供了多种灵活高效的方式来获取请求参数,满足各种应用场景。

无论您是Spring Boot的初学者,还是希望更深入了解参数获取的最佳实践,本文都将为您提供宝贵的参考。

@RequestParam

查询参数(Query Parameters): 附加在 URL 问号(?)后面的参数,用于过滤、排序等;使用 @RequestParam 注解获取。

例如:http://localhost:8080/api/users?name=John&age=30 中的 name 和 age。

    @GetMapping("/users")
    public void getParam(@RequestParam("name") String name, @RequestParam("age") Integer age) {
        log.info("name = {},age = {}", name, age);
    }

@PathVariable

路径变量(Path Variables): URI 路径中的一部分,用作占位符,传递给后端 API;使用 @PathVariable 注解获取。

例如:http://localhost:8080/api/users/1 中的 1 可以是用户 ID。

    @GetMapping("/users/{id}")
    public void getParam(@PathVariable("id") Long id) {
        log.info("获取到用户id = {}", id);
    }

@MatrixVariable

矩阵变量(Matrix Variables): 较少使用,在 URI 路径中使用分号(;)分隔的参数。使用 @MatrixVariable 注解获取。

注意:SpringBoot默认禁用矩阵变量的功能,开启方式如下:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.util.UrlPathHelper;

@Configuration
public class MyWebConfig implements WebMvcConfigurer {
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        UrlPathHelper urlPathHelper = new UrlPathHelper();
        urlPathHelper.setRemoveSemicolonContent(false);
        configurer.setUrlPathHelper(urlPathHelper);
    }
}

例如:http://localhost:8080/api/users/123;name=zhangsan;age=18 中的name和age 参数。

 @GetMapping("/users/{id}")
    public void getParam(@PathVariable String id, @MatrixVariable(name = "name") String name, @MatrixVariable(name = "age") Integer age) {
        log.info("id = {},sort = {},order = {}", id, name, age);
    }

@RequestBody

请求体(Request Body): 常用于 POST、PUT 请求,将复杂数据结构放在请求体中传递。使用 @RequestBody 注解获取。

例如: 发送 JSON 格式的用户信息到 /api/users。

    @PostMapping("/users")
    public void getParam(@RequestBody List<UserInfo> userList) {
        log.info("userList = {}",userList);
    }

传参示例如下:

传参示例

@RequestHeader

请求头(Request Headers): HTTP 请求头中携带的参数,例如:认证信息等。使用 @RequestHeader 注解获取。
例如:获取Authorization 头信息。

   @GetMapping("/users")
    public void getParam(@RequestHeader("auth") String auth) {
        log.info("auth = {}",auth);
    }

传参示例如下:

传参示例

@CookieValue

Cookie: 存储在客户端的小型文本文件,用于维护会话状态等。使用 @CookieValue 注解获取。

    @GetMapping("/users")
    public void getParam(@CookieValue(name = "sessionId") String sessionId) {
        log.info("sessionId = {}",sessionId);
    }

传参示例如下:

传参示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1871299.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python私教张大鹏 PyWebIO通过事件回调实现表格的编辑和删除功能

从上面可以看出&#xff0c;PyWebIO把交互分成了输入和输出两部分&#xff1a;输入函数为阻塞式调用&#xff0c;会在用户浏览器上显示一个表单&#xff0c;在用户提交表单之前输入函数将不会返回&#xff1b;输出函数将内容实时输出至浏览器。这种交互方式和控制台程序是一致的…

PY32F003系列单片机,超值国产32位单片机,资料齐全 易于开发

PY32F003 系列微控制器是采用高性能的 32 位 ARM Cortex-M0 内核&#xff0c;宽电压工作范围的 MCU。嵌入高达 64 Kbytes flash 和 8 Kbytes SRAM 存储器&#xff0c;最高工作频率 32 MHz。包含多种不同封装类型多款产品。 PY32F003 系列微控制器的工作温度范围为 -40 ~ 85 ℃…

【铂电阻测温】如何保证热电阻采集的可靠性

TPS02RAH的输出接口为I2C&#xff0c;支持主机动态更改模块I2C地址&#xff0c;实现了单I2C总线挂载多个TPS02RAH测温模块的功能。 TPS02RAH的输出接口为I2C&#xff0c;支持主机动态更改模块I2C地址&#xff0c;实现了单I2C总线挂载多个TPS02RAH测温模块的功能。 参考链接 【…

酷瓜云课堂(内网版)v1.1.5 发布,局域网在线学习+考试系统

更新内容 更新layui-v2.9.10更新docker国内镜像地址增加导入镜像构建容器的方式教师不批阅非首次考试试卷轮播图增加专栏类型目标链接增加课程能否发布检查去除初始化kindeditor语言文件去除选择题EF选项优化富文本内容显示样式优化内容图片点击放大监听优化试题题干答案等图片…

量化交易策略:定义及其重要性

量化交易是华尔街和硅谷的秘密结合点&#xff0c;在这里数学和算法与金钱和市场相遇。虽然它曾经是金融巨头的专属领域&#xff0c;但现在它比以往任何时候都更易于接触。 但不要被愚弄&#xff0c;量化交易仍然是一种高速、高压的游戏&#xff0c;在毫秒间可以赚到或失去财富…

nodepad 中换行符、tab替换

1 nodepad 主要符号 换行符: \r\n&#xff08;windows&#xff09; tab: \t 2 展示符号 3 相互替换 tip:需要点击扩展 参考&#xff1a; https://blog.csdn.net/lijing742180/article/details/85174564

商务英语培训柯桥外语学校生活口语“Rose”是玫瑰,那“Under the rose”是“玫瑰之下”?

最近&#xff0c;《玫瑰的故事》很火&#xff0c;女主角在剧中也经常收到黄色的玫瑰花。玫瑰花常常与爱情、美丽和浪漫相关&#xff0c;今天一起跟着英语君学习玫瑰花的俚语吧。 Under the rose 意思&#xff1a;私下地、秘密地或隐秘地。来自拉丁语短语sub-rosa&#xff0c;它…

EE5805-java-Lecture1 Introduction to java

暑期选择了java减轻下学期的课量&#xff0c;在本科期间就已经学过Java了&#xff0c;现在写一些笔记作为复习。 The Goal • To understand the Java runtime environment. • To know Java’s terminologies, advantages and characteristics. • To recognize the form of…

vi编辑器的常用方法

一、背景描述 在我们连接操作Linux服务器的时候&#xff0c;需要对其配置文件等内容进行一些增删改的操作&#xff0c;一般情况下我们直接使用Linux系统自带vi编辑器进行相应的操作&#xff0c;熟悉vi的常用功能对于我们编辑一些较大的文件效率能够有所提升&#xff0c;使用起来…

【设计模式】行为型-策略模式

策略模式&#xff0c;如春风吹过&#xff0c;随心所欲&#xff0c;变幻无穷&#xff0c;每一丝风都是一种选择。 文章目录 一、订单处理二、策略模式三、策略模式的核心组成四、运用策略模式五、策略模式的应用场景六、小结推荐阅读 一、订单处理 场景假设&#xff1a;有一个…

Python网络爬虫实战6—下一页,模拟用户点击,切换窗口

【前期提要】感兴趣的可以看看往期文章哈~ Python网络爬虫5-实战网页爬取 Python网络爬虫4-实战爬取pdf Pyhon网络爬虫3-模拟用户点击 Python网络爬虫实战2-下载url下的pdf Python网络爬虫基础1 1.需求背景 针对长虹美菱电器说明书网页形式&#xff0c;编写爬虫代码&#xff…

数通云网架构师涨薪班毕业都有哪些工作企业和岗位?

数通云网架构师涨薪班课程学完后&#xff0c;学员具备全行业全场景交付数通项目的能力&#xff0c;胜任企业网&#xff0c;广域网&#xff0c;数据中心网络等各种网络项目的交付能力&#xff0c;技术能力一项能够匹配年薪达30w-40w以上网络工程师岗位。 与誉天进行人才培养&…

Swagger2及常用校验注释说明

Api(value "后台用户管理") RestController RequestMapping("bossuser") public class BossUserController {ApiOperation(value "测试接口")PostMapping("test")public String testUser(Valid RequestBody TestUser user) {LOG.inf…

大数据------额外软件、插件及技术------Linux(完整知识点汇总)

Linxu 不同领域的主流操作系统 桌面操作系统 WindowsMAac OSLinux 服务器端操作系统 UNIX&#xff08;付费&#xff09;LinuxWindows Server&#xff08;付费&#xff09; 移动设备操作系统 Android&#xff08;基于Linux开源&#xff09;IOS&#xff08;不开源&#xff09; 嵌…

电脑桌面便签怎么添加,桌面备忘录软件哪个简单又好用?

在日常的工作或学习中&#xff0c;我们经常需要记事、备忘。这时&#xff0c;一个简单实用的桌面便签工具就显得尤为重要了。那么&#xff0c;电脑桌面便签怎么添加&#xff1f;又有哪些桌面备忘录软件既简单又好用呢&#xff1f; 首先&#xff0c;关于如何添加电脑桌面便签。…

vue如何引入图标

方法1&#xff1a;iconify/vue pnpm add iconify/vue -D 网址&#xff1a;https://icon-sets.iconify.design/ 使用哪个需要安装 如下截图,安装指令&#xff1a; > npm install iconify/icons-gg在使用的页面引入 import { Icon } from “iconify/vue”; <template>…

CODESYS+EtherCAT+X86/ARM硬件平台:高性能运动控制的标配,支持定制

支持的硬件标准与定制平台&#xff1a; X86:INTEL ARM: RK3568/RK3588/TI/NXP/树莓派/全志T3/A40i等 前段时间分享了施耐德基于CODEYS开发的首款支持EtherCAT总线的运动控制器&#xff0c;CODESYSEtherCATX86硬件平台&#xff1a;高性能运动控制的标配。 CODESYS第一次接触还…

【银河麒麟】unzip程序卡住,处理机制详解,附代码

1.服务器环境以及配置 【机型】 处理器&#xff1a; HUAWEI,Kunpeng 920 内存&#xff1a; 400G 【内核版本】 4.19.90-23.18.v2101.ky10.aarch64 【OS镜像版本】 银河麒麟高级服务器操作系统V10-SP1-0711-arm 【第三方软件】 docker 2.问题现象描述 一台k8s服务器…

Camera2内存泄漏修复

最近公司想要使用Camera2来替换线上的旧版相机&#xff0c;功能调研过程中发现Camera2在很多机器上都会有奇怪的内存泄漏&#xff0c;比较明显的时候可能有100M&#xff0c;比较常见的是表现为内存释放不及时&#xff08;上涨一段时间后会有一次下降&#xff09;&#xff0c;这…

Web渗透:XXE-XML外部实体漏洞

XML External Entity (XXE) 漏洞是一种注入攻击&#xff0c;利用不安全的XML解析器来执行各种恶意操作&#xff0c;如读取本地文件、执行远程代码、发起拒绝服务攻击等&#xff1b;此漏洞的根本原因在于XML标准允许在文档中定义外部实体&#xff0c;并在解析时进行解析和替换。…