后端接收参数的几种常用注解
目录
一、@RequestParam
二、@RequestBody
三、@PathVariable
四、@RequestHeader
五、@RequestAttribute
六、@RequestPart
七、@Valid
一、@RequestParam
1.作用
- 用于将请求中的 查询参数 或 表单参数 绑定到方法的参数上。
- 支持 GET 和 POST 请求。
2.使用方法
@GetMapping("/search")
public ResponseEntity<List<Item>> searchItems(@RequestParam(value = "keyword", required = false) String keyword,@RequestParam(value = "page", defaultValue = "1") int page) {// 业务逻辑
}
3.属性说明
value或name:参数名,对应请求中的参数键名,变量名与参数名相同时可省略。required:是否为必需参数,默认值为true。如果设置为false,当参数缺失时,方法不会报错。defaultValue:参数的默认值,当请求中未包含该参数时使用。
二、@RequestBody
1.作用
-
用于将请求体中的 JSON 数据 绑定到方法的参数上。
-
常用于处理 POST、PUT、PATCH 请求。
2.使用方法
@PostMapping("/users")
public ResponseEntity<User> createUser(@RequestBody User user) {// 业务逻辑
}
3.属性说明
required:是否为必需参数,默认值为true。如果设置为false,当请求体为空时,参数值为null。
三、@PathVariable
1.作用
- 用于将 URL 路径中的变量 绑定到方法的参数上。
- 常用于 RESTful 风格的接口。
2.使用方法
@GetMapping("/users/{id}")
public ResponseEntity<User> getUser(@PathVariable("id") Long id) {// 业务逻辑
}
3.属性说明
value或name:路径变量的名称,对应{}中的变量名。required:是否为必需参数,默认值为true。
四、@RequestHeader
1.作用
- 用于将 请求头信息 绑定到方法的参数上。
2.使用方法
@GetMapping("/profile")
public ResponseEntity<User> getProfile(@RequestHeader("Authorization") String token) {// 业务逻辑
}
3.属性说明
value或name:请求头的名称。required:是否为必需参数,默认值为true。defaultValue:当请求头缺失时的默认值。
五、@RequestAttribute
1.作用
- 用于将 请求范围内的属性 绑定到方法的参数上。
- 这些属性通常由拦截器或过滤器预先设置。
2.使用方法
@GetMapping("/order")
public ResponseEntity<Order> getOrder(@RequestAttribute("userId") Long userId) {// 业务逻辑
}
3.属性说明
value或name:属性的名称。required:是否为必需参数,默认值为true。
4.示例
拦截器设置:
public class AuthInterceptor extends HandlerInterceptorAdapter {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {Long userId = // 从请求中解析用户IDrequest.setAttribute("userId", userId);return true;}
}
六、@RequestPart
1.作用
- 用于接收
multipart/form-data请求中的特定部分,常用于文件上传。 - 与
@RequestParam不同,@RequestPart支持解析复杂的对象和文件。
2.使用方法
@PostMapping("/upload")
public ResponseEntity<?> uploadFile(@RequestPart("file") MultipartFile file,@RequestPart("description") String description) {// 业务逻辑
}
3.属性说明
value或name:请求部分的名称。required:是否为必需参数,默认值为true。
七、@Valid
1.简介
作用:用于触发对参数对象的验证。
使用场景:与参数对象(如实体类、DTO)配合使用。
常用的验证注解包括:
@NotNull:字段不能为空@NotEmpty:集合、字符串等不能为空@NotBlank:字符串不能为空白字符@Size:指定集合、数组、字符串的长度范围@Min、@Max:指定数值的最小值和最大值@Email:邮箱格式验证@Pattern:正则表达式匹配
2.使用方法
public class UserDTO {@NotBlank(message = "用户名不能为空")private String username;@Email(message = "邮箱格式不正确")private String email;@Size(min = 6, max = 20, message = "密码长度必须在6到20位之间")private String password;// Getters and Setters
}
@PostMapping("/register")
public ResponseEntity<?> register(@Valid @RequestBody UserDTO userDTO, BindingResult result) {if (result.hasErrors()) {// 处理验证错误String errorMessage = result.getAllErrors().get(0).getDefaultMessage();return ResponseEntity.badRequest().body(errorMessage);}// 业务逻辑
}
3.异常处理
BindingResult 接口:
- 用于获取验证结果,必须紧跟在被
@Valid注解的参数后面。 - 可用于判断验证是否通过,获取错误信息。
全局异常处理:
可以使用 @ControllerAdvice 和 @ExceptionHandler 注解,统一处理验证异常。
@RestControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(MethodArgumentNotValidException.class)public ResponseEntity<?> handleValidationException(MethodArgumentNotValidException ex) {String errorMessage = ex.getBindingResult().getAllErrors().get(0).getDefaultMessage();return ResponseEntity.badRequest().body(errorMessage);}
}
相关文章:
后端接收参数的几种常用注解
目录 一、RequestParam 二、RequestBody 三、PathVariable 四、RequestHeader 五、RequestAttribute 六、RequestPart 七、Valid 一、RequestParam 1.作用 用于将请求中的 查询参数 或 表单参数 绑定到方法的参数上。支持 GET 和 POST 请求。 2.使用方法 GetMappin…...
如何使用docker在linux中配置C++环境
目录 1. 安装docker 2. 配置C环境 1)启动ubuntu:22.04容器 2)配置编译环境G 3)安装软件 4)测试 1. 如何打包容器生成tar? a. 生成容器镜像 b. 将镜像压缩成tar 2. 如何将容器内部的端口映射至宿主机…...
darknet_ros 使用教程
首先是git clone可能会因为到没有权限的问题(SSH),此时输入 git clone --recursive https://github.com/leggedrobotics/darknet_ros.git 下载成功之后 catkin_make -DCMAKE_BUILD_TYPERelease catkin失败原因(在CMakefile中&…...
第九课 Vue中的v-bind指令拓展
Vue中的v-bind指令 示例拓展 1)切换样式 <style>.test{width: 100px;height: 100px;border: 3px solid #000;}.bg{background: red;}</style><div id"app"><input type"button" value"点击切换样式" click&qu…...
DOIP协议介绍2-Diagnostic power mode information request (0x4003)消息
DOIP(Diagnostic communication over Internet Protocol)是基于以太网的通讯协议,用于对UDS协议的数据进行传输,规范于ISO13400标准。DOIP的Type:Diagnostic power mode information request(0x4003&#x…...
Eclipse 软件:配置 JDBC、连接 MySQL 数据库、导入 jar 包
目录 一、配置 JDBC (一)作用 (二)官网下载 1. 下载链接 2. 下载 3. 补充:压缩包分类与用途 (三)eclipse 导入 JDBC 的 jar 包 (四)加载数据库驱动 (五…...
二叉树中的最长交错路径
题目链接 二叉树中的最长交错路径 题目描述 注意点 每棵树最多有 50000 个节点每个节点的值在 [1, 100] 之间起点无需是根节点 解答思路 要找到最长交错路径,首先想到的是深度优先遍历因为起点无需是根节点,所以对于任意一个节点,其可以…...
高校企业数据可视化平台功能介绍/特色功能
数据可视化平台是一款适用于高校教学和各领域企业的零门槛可视化工具,能够解决高校数据分析与可视化类课程教学、实训问题。平台采用B/S结构,用户不需要下载客户端,可通过浏览器进行访问。 数据可视化平台提供多种指标设计,学…...
RHCE第三次笔记SSH
第三章 远程连接服务器 1、远程连接服务器简介 (1)什么是远程连接服务器 远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录 linux 主机以取得可操作主机接口(shell ),而登录后…...
JAVA基础-包装类
文章目录 包装类1 概述2 Integer类2.1 Integer类构造方法2.2 Integer类成员方法 3 基本类型与字符串之间的转换3.1 基本类型转换为String3.2 String转换成基本类型 4 底层原理 第六章:算法小题练习一:练习二:练习三:练习四&#x…...
复合逻辑运算与复合逻辑门
或非门(NOR gate) 是一种基本的逻辑门,它结合了“或”(OR)和“非”(NOT)操作。或非门的输出是输入信号的否定,只有在所有输入都为零时,输出才为一。 与非运算࿰…...
工厂模式~
现实世界中的例子 考虑一个招聘经理的情况。一个人不可能为每一个职位都进行面试。根据职位空缺,她必须决定并将面试步骤委托给不同的人。 用简单的话来说 它提供了一种将实例化逻辑委托给子类的方法。 维基百科的解释 在基于类的编程中,工厂方法模式是…...
Elasticsearch基本使用及介绍
Elasticsearch 1. 关于各种数据库的使用 关于MySQL:是关系型数据库,能清楚的表示数据之间的关系,并且,是基于磁盘存储的,可以使用相对较低的成本存储大量的数据 关于Redis:是基于K-V结构的在内存中读写数…...
10. PH47代码框架文件组织
通过之前章节对PH47体系的介绍,读者对PH47能建立起了初步的概念及掌握各主要构成部分的使用开发方法。从本章节开始,就将对PH47代码的二次开发内容进行具体讲述。 本部分就将对PH47框架当中代码文件的组织方式及功能作用进行介绍,对于将来熟…...
LabVIEW提高开发效率技巧----VI继承与重载
在LabVIEW开发中,继承和重载是面向对象编程(OOP)中的重要概念。通过合理运用继承与重载,不仅能提高代码的复用性和灵活性,还能减少开发时间和维护成本。下面从多个角度介绍如何在LabVIEW中使用继承和重载,并…...
4.8 大数据发展趋势
文章目录 今天,我想与大家探讨一个充满潜力和变革的主题——大数据的发展趋势。大数据不仅正在改变我们的工作和生活方式,更是推动社会进步和经济发展的关键因素。 首先,让我们看看国内的大数据发展趋势。中国政府高度重视大数据产业&#x…...
【无标题】react组件封装
子组件制作 import { useState,useRef, useEffect} from "react"const Table (data)> {const {value ,option} dataconsole.log(value)const [stata,setValue] useState()const useRefs useRef(value)useEffect(()> {useRefs.current.value value })c…...
git+cmake将Open3D配置到visual studio
这里假设你已经安装好了上述内容,我们直接开始安装: 第一步:以管理员身份打开powershell,执行 git clone https://github.com/isl-org/Open3D.git然后依次执行 cd Open3D mkdir build cd build开启你的梯子,并设置你…...
ArcGIS-CityEngine 2024-新手小白也能试用+入门可视化vga编程--第一篇
目录 下载CityEngine并创建空项目 场景双击 _Tour (Navigator面板)的就行了,(不用额外下载) 生成街道 基本操作 多个图层Group 区分 Editor 多个区域(插件模式,浮空窗口, 官方的例子&…...
IntelliJ IDEA 快捷键大全(也适用全家桶其他编辑器)
以下是 IntelliJ IDEA 的常用功能快捷键大全,适用于 Windows/Linux 系统(Mac 用户可将 Ctrl 替换为 Cmd,Alt 替换为 Option): 功能分类功能描述快捷键 (Windows/Linux)基本操作显示所有快捷键Ctrl J显示主菜单Alt H…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
