springboot 19种参数接收方式
1. @PathVariable
用来处理URL路径中的参数。
@GetMapping("/user/{id}")
public String getUser(@PathVariable String id) {
return "User ID: " + id;
}
2. @RequestParam
用于处理URL中的查询参数。
@GetMapping("/user")
public String getUser(@RequestParam String id) {
return "User ID: " + id;
}
3. @RequestHeader
用于获取HTTP请求头信息。
@GetMapping("/user")
public String getUser(@RequestHeader("User-Agent") String userAgent) {
return "User Agent: " + userAgent;
}
4. @RequestBody
用来接收客户端发送的JSON或XML等格式的请求体。
@PostMapping("/user")
public String createUser(@RequestBody User user) {
return "User Name: " + user.getName();
}
5. @ModelAttribute
主要用于表单提交,将请求参数绑定到对象上。
@PostMapping("/user")
public String createUser(@ModelAttribute User user) {
return "User Name: " + user.getName();
}
6. @RequestAttribute
用于获取在请求期间添加的属性。
@GetMapping("/user")
public String getUser(@RequestAttribute String id) {
return "User ID: " + id;
}
7. @CookieValue
用来获取请求中的Cookie值。
@GetMapping("/user")
public String getUser(@CookieValue(value = "SessionID", defaultValue = "default") String sessionId) {
return "Session ID: " + sessionId;
}
8. @SessionAttribute
用于获取会话范围内的属性。
@GetMapping("/user")
public String getUser(@SessionAttribute("user") User user) {
return "User Name: " + user.getName();
}
9. @MatrixVariable
用于从路径中的矩阵变量获取值。
@GetMapping("/user/{id}")
public String getUser(@PathVariable String id, @MatrixVariable String name) {
return "User Name: " + name;
}
10. HttpServletRequest
通过Servlet API直接获取请求参数。
@GetMapping("/user")
public String getUser(HttpServletRequest request) {
String id = request.getParameter("id");
return "User ID: " + id;
}
11. MultiValueMap & Map
用来处理表单提交的参数。
@PostMapping("/user")
public String createUser(@RequestParam MultiValueMap<String, String> paramMap) {
return "Parameters: " + paramMap.toString();
}
12. @RequestPart
专门用于获取请求中的multipart部分。
@PostMapping("/upload")
public String uploadFile(@RequestPart("file") MultipartFile file) {
return "File Name: " + file.getOriginalFilename();
}
13. @RequestParam Map
获取请求中的查询参数,并将其绑定到Map中。
@GetMapping("/user")
public String getUser(@RequestParam Map<String, String> params) {
return "Parameters: " + params.toString();
}
14. @PathVariable Map
获取路径变量,并将其绑定到Map中。
@GetMapping("/user/{id}/{name}")
public String getUser(@PathVariable Map<String, String> pathVars) {
return "Path Variables: " + pathVars.toString();
}
15. HandlerMethodArgumentResolver
自定义参数解析器来处理复杂的请求参数。
public class CustomArgumentResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter parameter) {
return parameter.getParameterType().equals(CustomObject.class);
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
return new CustomObject(webRequest.getParameter("customParam"));
}
}
16. @RequestParam List
绑定请求中的多个参数到List。
@GetMapping("/users")
public String getUsers(@RequestParam List<String> ids) {
return "User IDs: " + ids.toString();
}
17. @RequestParam数组
绑定请求中的多个参数到数组。
@GetMapping("/users")
public String getUsers(@RequestParam String[] ids) {
return "User IDs: " + Arrays.toString(ids);
}
18. @RequestParam Optional
用Optional来处理可选的请求参数。
@GetMapping("/user")
public String getUser(@RequestParam Optional<String> id) {
return "User ID: " + id.orElse("default");
}
19. @ModelAttribute用在参数上
获取请求参数,并使用@ModelAttribute注解进行方法参数绑定。
@GetMapping("/search")
public String searchUser(@ModelAttribute("criteria") SearchCriteria criteria) {
return "Search Criteria: " + criteria.toString();
}