当前位置: 首页 > 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请求参数! 🚀

相关文章:

  • React 基础语法
  • 深度学习入门Day2--鱼书学习(1)
  • RAG架构中用到的模型学习思考
  • 大疆无人机的二次开发
  • Docker 容器化:核心技术原理与实践
  • 无人机论文感想
  • 无人机甲烷检测技术革新:开启环境与能源安全监测新时代
  • LeetCode第244题_最短单词距离II
  • C#基础语法
  • 大语言模型评测体系全解析(上篇):基础框架与综合评测平台
  • Linux或者Windows下PHP版本查看方法总结
  • day45 python预训练模型
  • Git 常用命令 - 服务器用
  • PostgreSQL的扩展 passwordcheck
  • 【开源工具】超全Emoji工具箱开发实战:Python+PyQt5打造跨平台表情管理神器
  • SOC-ESP32S3部分:27-设备OTA
  • Ethernet/IP转DeviceNet网关:驱动大型矿山自动化升级的核心纽带
  • 【C++高级主题】多重继承下的类作用域
  • LeetCode第245题_最短单词距离III
  • 超临界二氧化碳再热再压缩布雷顿循环建模与先进控制
  • 家居网站建设效果/怎么做网站模板
  • 亚洲做性视频网站/成都品牌推广
  • 自己怎样免费建设网站/seo对网店推广的作用有哪些
  • 免费建网站的服务器/推广产品的方法
  • 用阿里云建站wordpress/搜索引擎免费下载
  • 目前做哪些网站能致富/chrome谷歌浏览器官方下载