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

Springboot中Controller接收参数的方式

  在Spring Boot中,@Controller@RestController可以通过多种方式接收客户端传递的参数,主要包括以下几种常见方式:


1. 接收路径参数(@PathVariable

从URL路径中提取参数,适用于RESTful风格的API。

示例

@RestController
@RequestMapping("/user")
public class UserController {// 示例URL: /user/123@GetMapping("/{id}")public String getUserById(@PathVariable Long id) {return "User ID: " + id;}// 多个路径变量@GetMapping("/{name}/{age}")public String getUserInfo(@PathVariable String name,@PathVariable int age) {return "Name: " + name + ", Age: " + age;}
}

2. 接收查询参数(@RequestParam

从URL的?key=value格式中获取参数,适用于GET请求。

示例

@RestController
@RequestMapping("/search")
public class SearchController {// 示例URL: /search?keyword=spring@GetMappingpublic String search(@RequestParam String keyword) {return "Searching for: " + keyword;}// 可选参数(默认值)@GetMapping("/optional")public String searchOptional(@RequestParam(required = false, defaultValue = "default") String keyword) {return "Keyword: " + keyword;}// 接收多个参数@GetMapping("/multi")public String multiParams(@RequestParam String name,@RequestParam int age) {return "Name: " + name + ", Age: " + age;}
}

3. 接收表单数据(@ModelAttribute

适用于HTML表单提交(POST请求),自动绑定到Java对象。

示例

@RestController
@RequestMapping("/form")
public class FormController {// 接收表单数据并绑定到User对象@PostMapping("/submit")public String submitForm(@ModelAttribute User user) {return "Submitted: " + user.getName() + ", " + user.getAge();}
}// User.java
public class User {private String name;private int age;// getters & setters
}

4. 接收JSON请求体(@RequestBody

适用于POST/PUT请求,接收JSON格式数据并自动映射到Java对象。

示例

@RestController
@RequestMapping("/api")
public class ApiController {// 接收JSON数据并映射到User对象@PostMapping("/create")public String createUser(@RequestBody User user) {return "Created: " + user.getName() + ", " + user.getAge();}
}

请求示例(POST /api/create

{"name": "Alice","age": 25
}

5. 接收HTTP请求头(@RequestHeader

获取HTTP请求头信息,如AuthorizationContent-Type等。

示例

@RestController
@RequestMapping("/header")
public class HeaderController {@GetMapping("/info")public String getHeader(@RequestHeader("User-Agent") String userAgent) {return "User-Agent: " + userAgent;}
}

6. 接收Cookie(@CookieValue

获取客户端发送的Cookie值。

示例

@RestController
@RequestMapping("/cookie")
public class CookieController {@GetMapping("/get")public String getCookie(@CookieValue("JSESSIONID") String sessionId) {return "Session ID: " + sessionId;}
}

7. 接收文件上传(MultipartFile

适用于文件上传(如<input type="file">)。

示例

@RestController
@RequestMapping("/upload")
public class UploadController {@PostMapping("/file")public String uploadFile(@RequestParam("file") MultipartFile file) {return "File uploaded: " + file.getOriginalFilename() + ", Size: " + file.getSize();}
}

总结

方式适用场景注解示例
路径参数RESTful API(如/user/{id}@PathVariable/user/123id=123
查询参数GET请求(?key=value@RequestParam/search?q=spring
表单数据HTML表单提交(POST)@ModelAttribute<form>User对象
JSON请求体POST/PUT请求(JSON数据)@RequestBody{"name": "Alice"}
HTTP请求头获取请求头信息@RequestHeaderAuthorization: Bearer xxx
Cookie获取Cookie值@CookieValueJSESSIONID=xxx
文件上传文件上传(<input type="file">MultipartFile上传图片/文档

最佳实践

  • RESTful API:优先使用 @PathVariable + @RequestBody
  • 表单提交:使用 @ModelAttribute@RequestParam
  • 文件上传:使用 MultipartFile
  • 复杂参数:使用 @RequestBody 接收JSON数据。

掌握这些方式后,可以灵活处理各种HTTP请求参数! 🚀

http://www.lqws.cn/news/96103.html

相关文章:

  • 第7章 :面向对象
  • Spring Security
  • tryhackme——Abusing Windows Internals(进程注入)
  • Qwen3高效微调
  • 服务器被攻击了怎么办
  • 机器学习与深度学习08-随机森林02
  • 解决MyBatis参数绑定中参数名不一致导致的错误问题
  • 服务器租用:高防CDN和加速CDN的区别
  • Java基础之数组(附带Comparator)
  • 《TCP/IP 详解 卷1:协议》第5章:Internet协议
  • electron-vite_18桌面共享
  • 电脑硬盘分几个区好
  • Oracle、PostgreSQL 与 MySQL 数据库对比分析与实践指南
  • React知识点梳理
  • pip安装python第三方库报错
  • ‌CDGP|数据治理的低效性:企业AI落地的另一大挑战
  • LeetCode 高频 SQL 50 题(基础版) 之 【高级查询和连接】· 下
  • chromedriver 下载失败
  • 使用Redis的四个常见问题及其解决方案
  • backend 服务尝试连接 qdrant 容器,但失败了,返回 502 Bad Gateway 问题排查
  • LeetCode 139. 单词拆分(Word Break) - 动态规划深度解析
  • 堆叠弹窗 VS 队列弹窗之争
  • h5的aliplayer-min.js 加密视频会走到debugger
  • 手机上网可以固定ip地址吗?详细解析
  • Redis 缓存问题及其解决方案
  • hive聚合函数多行合并
  • 不动产登记区块链系统(Vue3 + Go + Gin + Hyperledger Fabric)
  • 《前端面试题:CSS对浏览器兼容性》
  • 酷狗概念版4.1.6深度体验:探索音乐新境界的便捷之选
  • 【C++11】折叠引用和完美转发