Spring Boot中的 6 种API请求参数读取方式
使用Spring Boot开发API的时候,读取请求参数是服务端编码中最基本的一项操作,Spring Boot中也提供了多种机制来满足不同的API设计要求。
接下来,就通过本文,为大家总结6种常用的请求参数读取方式。如果你发现自己知道的不到6种,那么赶紧来查漏补缺一下。如果你知道的不止6种,那么告诉大家,一起互相学习一下吧~
@RequestParam
这是最最最最最最常用的一个了吧,用来加载URL中?之后的参数。
比如:这个请求/user?name=didispace 就可以如下面这样,使用@RequestParam来加载URL中的name参数
@GetMapping("/user")
@ResponseBody()
public User findUserByName(@RequestParam("name") String name){ return userRepo.findByName(name);
}
@PathVariable
这是RESTful风格API中常用的注解,用来加载URL路径中的参数
比如:这个请求/user/1 就可以如下面这样,使用@PathVariable来加载URL中的id参数
@GetMapping("/user/{id}")
@ResponseBody()
public User findUserById(@PathVariable("id") String id){ return userRepo.findById(id);
}
@MatrixVariable
这个我们用的并不是很多,但一些国外系统有提供这类API参数,这种API的参数通过;分割。
比如:这个请求/books/reviews;isbn=1234;topN=5; 就可以如下面这样,使用@MatrixVariable来加载URL中用;分割的参数
@GetMapping("/books/reviews")
@ResponseBody()
public List<BookReview> getBookReviews( @MatrixVariable String isbn, @MatrixVariable Integer topN) {return bookReviewsLogic.getTopNReviewsByIsbn(isbn, topN);
}
@RequestBody
这也是最常用的一个注解,用来加载POST/PUT请求的复杂请求体(也叫:payload)。比如,客户端需要提交一个复杂数据的时候,就要将这些数据放到请求体中,然后服务端用@RequestBody来加载请求体中的数据
@PostMapping("/add")
public boolean addAccounts(@RequestBody List<Account> accounts) throws SQLException {accounts.stream().forEach(a -> {a.setCreatedOn(Timestamp.from(Instant.now()));a.setLastLogin(Timestamp.from(Instant.now()));});return notificationLogic.addAccounts(accounts);
}
@RequestHeader
@RequestHeader注解用来加载请求头中的数据,一般在业务系统中不太使用,但在基础设施的建设中会比较常用,比如传递分布式系统的TraceID等。用法也很简单,比如,假设我们将鉴权数据存在http请求头中,那么就可以像下面这样用@RequestHeader来加载请求头中的Authorization参数
@GetMapping("/user")
@ResponseBody()
public List<User> getUserList(@RequestHeader("Authorization") String authToken) {return userRepo.findAll();
}
@CookieValue
当我们需要与客户端保持有状态的交互时,就需要用到Cookie。此时,服务端读取Cookie数据的时候,就可以像下面这样用@CookieValue来读取Cookie中的SessionId数据
@GetMapping("/user")
@ResponseBody()
public List<User> getUserList(@CookieValue(name = "SessionId") String sessionId) {return userRepo.findAll();
}
相关文章:
Spring Boot中的 6 种API请求参数读取方式
使用Spring Boot开发API的时候,读取请求参数是服务端编码中最基本的一项操作,Spring Boot中也提供了多种机制来满足不同的API设计要求。 接下来,就通过本文,为大家总结6种常用的请求参数读取方式。如果你发现自己知道的不到6种&a…...
Linux基础命令[27]-gpasswd
文章目录 1. gpasswd 命令说明2. gpasswd 命令语法3. gpasswd 命令示例3.1 不加参数3.2 -a(将用户加入组)3.3 -d(从组中删除用户)3.4 -r(删除组密码)3.5 -M(多个用户一起加入组)3.6 …...
机会约束转化为确定性约束-- 样本均值法
当涉及到新能源消纳的机会约束规划时,我们需要深入理解其背后的原理和采用的方法。以下是对上文内容的更详细且更贴切的展开解释: 机会约束转化为确定性约束-- 样本均值法代码获取戳此处代码获取戳此处代码获取戳此处 新能源消纳的机会约束 新能源&…...
uniapp中,当页面显示时触发子组件的重新渲染
使用watch监听数据变化: 在子组件中使用watch来监听父组件传递的数据,一旦数据发生变化,子组件就会重新渲染。 子组件代码示例: <template><div>{{ message }}</div> </template><script> export d…...
先进制造aps专题五 aps软件的排程算法和优化算法介绍
aps软件的核心,主要是数据管理,排程/优化算法,各类甘特图 所有aps软件排程算法都是Heuristics启发式算法(如Greedy算法),只是有的aps软件还支持ga遗传算法优化(比如sap apo,oracle aps,isuperap…...
【跳坑日记】暴力解决Ubuntu SSH报错: Failed to start OpenBSD Secure Shell server
报错环境说明: 服务器环境:Ubuntu 20.04 错误内容 最近服务器突然报错,提示如下图信息: 搜素了各种问答,国内的回答大多数是用 ssh-keygen -A命令来解决,但最终也无法登录服务器。 最终搜索到ask ubun…...
从需求角度介绍PasteSpider(K8S平替部署工具适合于任何开发语言)
你是否被K8S的强大而吸引,我相信一部分人是被那复杂的配置和各种专业知识而劝退,应该还有一部分人是因为K8S太吃资源而放手! 这里介绍一款平替工具PasteSpider,PasteSpider是一款使用c#编写的linux容器部署工具(使用PasteSpider和…...
线性三角化
点的线性三角化 输入一堆的点 [ R w c , t w c , p u c ] [R_{wc},t_{wc},p_{uc}] [Rwc,twc,puc]转化成空间的一系列射线 [ P w i , t w i ] , P w i t w c , t w i R w c p u c [P_{wi},t_{wi}],P_{wi}t_{wc},t_{wi}R_{wc}\times p_{uc} [Pwi,twi],Pwitwc…...
Golang os.Rename invalid cross-device link的原因
文章目录 背景运行环境 文件系统对比linux下的文件系统mac下的文件系统linux下的mv指令 golang的os.Rename源码os.Renamesyscall.Renamesyscall.RenameatSYS_RENAMEAT是什么 查看系统调用函数文档什么是man pageman page的用法user commandssystem calls renameat不支持跨挂载点…...
Flutter 中的 Badge 小部件:全面指南
Flutter 中的 Badge 小部件:全面指南 在移动应用设计中,徽章(Badge)是一种常见的UI元素,用于吸引用户注意并展示重要信息,如未读消息数量、新通知等。Flutter 通过各种第三方包提供了徽章小部件࿰…...
Java 多线程抢红包
问题需求 一个人在群里发了1个100元的红包,被分成了8个,群里有10个人一起来抢红包,有抢到的金额随机分配。 红包功能需要满足哪些具体规则呢? 1、被分的人数抢到的金额之和要等于红包金额,不能多也不能少。 2、每个人至少抢到1元…...
【PB案例学习笔记】-08 控件拖动实现
写在前面 这是PB案例学习笔记系列文章的第8篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gitee…...
读书笔记整理
1.对天才而言,任何努力都如做游戏般容易和有趣,兴趣是发展的原动力。从这个角度来看,通过普通人的劳动是无法创造天才的。 2.让孩子理解语法是很困难的。苦背不如练才是行之有效的办法。孩子们永远是故事迷,在教孩子们外语时&…...
uniapp蓝牙打印图片
前言 这是个蓝牙打印图片的功能,业务是打印界面固定的demo范围,这里通过html2canvas插件生成的图片base64,然后图片base64绘制到canvas中去后,获取canvas中的像素信息,然后对像素信息进行一个灰度值处理,灰…...
Ajax用法总结(包括原生Ajax、Jquery、Axois)
HTTP知识 HTTP(hypertext transport protocol)协议『超文本传输协议』,协议详细规定了浏览器和万维网服务器之间互相通信的规则。 请求报文 请求行: GET、POST /s?ieutf-8...(url的一长串参数) HTTP/1.1 请求头…...
LeetCode 题解:112. 路径总和,递归,JavaScript,详细注释
原题链接: 112. 路径总和 解题思路: 如果求根节点到叶子节点的路径上的节点值之和,假设共有3个节点,那么写成计算式是val1 val2 val3 sum那么将计算式转换就可以得到val3 sum - val1 - val2也就是说,问题可以从…...
Spring (15)Spring Boot的自动配置是如何工作的
Spring Boot的自动配置是通过条件注解(如ConditionalOnClass,ConditionalOnBean等)和EnableAutoConfiguration注解来实现的。这一机制主要是为了简化配置过程,让开发者在满足特定条件时自动配置Spring应用。接下来,我们…...
【机器学习】—机器学习和NLP预训练模型探索之旅
目录 一.预训练模型的基本概念 1.BERT模型 2 .GPT模型 二、预训练模型的应用 1.文本分类 使用BERT进行文本分类 2. 问答系统 使用BERT进行问答 三、预训练模型的优化 1.模型压缩 1.1 剪枝 权重剪枝 2.模型量化 2.1 定点量化 使用PyTorch进行定点量化 3. 知识蒸馏…...
54. UE5 RPG 增加伤害类型
在正常的RPG游戏中,都存在一个类别就是属性伤害,比如,在一个游戏里面有一个火属性的技能,它造成的伤害就是火属性类型的,并且它还有可能有附加伤害,比如给予目标一个灼烧效果,每秒造成多少的火属…...
llama3 微调教程之 llama factory 的 安装部署与模型微调过程,模型量化和gguf转换。
本文记录了从环境部署到微调模型、效果测试的全过程,以及遇到几个常见问题的解决办法,亲测可用(The installed version of bitsandbytes was compiled without GPU support. NotImplementedError: Architecture ‘LlamaForCausalLM’ not sup…...
别只埋头改Bug!从Flutter高德地图鸿蒙适配,聊聊跨平台插件架构设计的最佳实践
从Flutter高德地图鸿蒙适配看跨平台插件架构设计的黄金法则 当Flutter遇上鸿蒙,开发者们既兴奋又忐忑。兴奋的是跨平台开发框架与国产操作系统的强强联合,忐忑的是两者结合带来的技术适配挑战。去年我们团队在将高德地图SDK集成到Flutter鸿蒙应用时&…...
丹青幻境·Z-Image Atelier部署教程:Docker Compose一键启停方案
丹青幻境Z-Image Atelier部署教程:Docker Compose一键启停方案 1. 学习目标与前置准备 本教程将手把手教你如何使用Docker Compose快速部署丹青幻境Z-Image Atelier数字艺术创作平台。通过本教程,你将学会: 如何在5分钟内完成环境搭建如何…...
Ostrakon-VL-8B辅助作业批改实战:识别手写公式与图表
Ostrakon-VL-8B辅助作业批改实战:识别手写公式与图表 每次批改理科作业,是不是都感觉眼睛快看花了?特别是面对几十份甚至上百份的手写作业,那些密密麻麻的公式、歪歪扭扭的电路图,还有各式各样的化学符号,…...
2.2.2.1 搭建Spark单机版环境
本次实战旨在Linux环境下完成Spark单机版环境的搭建。首先确保JDK已正确安装,随后获取Spark安装包并上传至服务器指定目录。接着,将安装包解压至系统路径,并通过修改配置文件设置环境变量,使系统能够识别Spark命令。最后ÿ…...
新一代指控系统依然是:人机环
AI是强大的“赋能器”和“加速器”,但指挥的艺术、责任和最终决断必须由人掌握。基于俄乌、美以伊博弈的案例,构建新一代“人机环境融合”体系化指控系统的具体实践路径已经清晰。AI的定位:从“自动化”到“智能化辅助”美军Maven系统&#x…...
视频SEO软件对网站流量有什么影响
视频SEO软件对网站流量有什么影响 在当今数字化时代,网站流量的获取和管理是每一个网站运营者关注的重点。而视频SEO软件作为一种现代化的工具,在提升网站流量方面扮演着重要角色。视频SEO软件究竟对网站流量有什么影响呢?我们将从问题分析、…...
HY-Motion 1.0作品集展示:12类日常动作+8类专业运动生成效果
HY-Motion 1.0作品集展示:12类日常动作8类专业运动生成效果 1. 引言:当文字能驱动骨骼 想象一下,你正在为一个游戏角色设计一套连贯的格斗动作,或者为一个虚拟主播编排一段自然的舞蹈。传统流程需要动画师一帧一帧地调整骨骼&am…...
QQ音乐加密文件完整解码指南:qmcdump终极教程
QQ音乐加密文件完整解码指南:qmcdump终极教程 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 还在为QQ音乐下…...
Krita AI Diffusion图像引导适配器功能异常的深度解决方案
Krita AI Diffusion图像引导适配器功能异常的深度解决方案 【免费下载链接】krita-ai-diffusion Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking required. 项目地址: https://gitcode.com/gh…...
实现网页完整捕获:Full Page Screen Capture技术解析与应用指南
实现网页完整捕获:Full Page Screen Capture技术解析与应用指南 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chr…...
