> 技术文档 > SpringBoot 获取请求参数的常用注解

SpringBoot 获取请求参数的常用注解


SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数

以下是主要的注解及其用法:


1. @RequestParam

用于获取查询参数(URL 参数),适用于 GET 请求或 POST 表单提交。

@GetMapping(\"/user\")public String getUser(@RequestParam(\"id\") Long userId) { return \"User ID: \" + userId;}// 可选参数,设置默认值@GetMapping(\"/search\")public String search(@RequestParam(value = \"q\", required = false, defaultValue = \"\") String query) { return \"Search: \" + query;}

2. @PathVariable

用于获取 URL 路径中的变量。

@GetMapping(\"/user/{id}\")public String getUser(@PathVariable(\"id\") Long userId) { return \"User ID: \" + userId;}// 当变量名与方法参数名相同时可省略@GetMapping(\"/article/{slug}\")public String getArticle(@PathVariable String slug) { return \"Article: \" + slug;}

3. @RequestBody

用于获取请求体中的 JSON/XML 数据,通常用于 POST/PUT 请求。

@PostMapping(\"/user\")public String createUser(@RequestBody User user) { return \"Created user: \" + user.getName();}

4. @RequestHeader

用于获取 HTTP 请求头中的值。

@GetMapping(\"/info\")public String getInfo(@RequestHeader(\"User-Agent\") String userAgent) { return \"User Agent: \" + userAgent;}

5. @CookieValue

用于获取 HTTP 请求中的 Cookie 值。

@GetMapping(\"/home\")public String home(@CookieValue(\"JSESSIONID\") String sessionId) { return \"Session ID: \" + sessionId;}

6. @ModelAttribute

用于绑定请求参数到模型对象,适用于表单提交。

@PostMapping(\"/register\")public String register(@ModelAttribute User user) { return \"Registered: \" + user.getName();}

7. @RequestPart

用于处理 multipart/form-data 请求中的文件上传。

@PostMapping(\"/upload\")public String uploadFile(@RequestPart(\"file\") MultipartFile file) { return \"Uploaded: \" + file.getOriginalFilename();}

8. 直接使用 Servlet API

SpringBoot 也支持直接使用 Servlet API 对象:

@GetMapping(\"/example\")public String example(HttpServletRequest request, HttpServletResponse response) { String param = request.getParameter(\"param\"); return \"Parameter: \" + param;}

9. 获取所有参数

@RequestParam Map 获取所有查询参数

@GetMapping(\"/params\")public String getAllParams(@RequestParam Map allParams) { return \"All params: \" + allParams.toString();}

@RequestParam MultiValueMap 获取可能有多个值的参数

@GetMapping(\"/multiParams\")public String getMultiParams(@RequestParam MultiValueMap params) { return \"Multi params: \" + params.toString();}

10. 参数绑定到对象

SpringBoot 支持自动将请求参数绑定到 Java 对象:

@GetMapping(\"/filter\")public String filterUsers(UserFilter filter) { return \"Filtering by: \" + filter.toString();}// UserFilter 类示例public class UserFilter { private String name; private Integer age; // getters and setters}

注意事项

请求示例:/filter?name=John&age=25

  1. 大多数注解都有 required 和 defaultValue 属性可以配置

  2. 对于复杂嵌套对象,SpringBoot 也能自动绑定

  3. 参数名称默认会与方法参数名匹配,除非在注解中指定

  4. 可以通过配置 spring.mvc.hiddenmethod.filter.enabled=true 来支持 PUT/DELETE 等方法的表单提交