最新实战案例锦集:《Spring Boot3实战案例合集》持续更新,每天至少更新一篇文章,订阅后将赠送文章最后展示的所有MD文档(学习笔记)。
环境:SpringBoot3.2.5
1. 简介
在如今的项目开发中,RESTful API 成为了服务端与客户端交互的标准方式。Spring MVC 作为 Spring 框架的核心模块之一,提供了强大的功能来处理 HTTP 请求。本文将详细介绍在 Spring Boot 控制器Controller中如何优雅地接收各种类型的请求参数,包括基本数据类型、复合对象、文件上传以及路径变量等等,以满足不同业务场景的需求。
我们将通过一系列具体的示例演示如何在控制器方法中使用如 @RequestParam、@PathVariable、@RequestBody、@MatrixVariable等注解来接收请求的不同参数形式,当然还包括不使用注解的情况下如何处理参数。
通过本文的学习,读者将能够掌握 Controller 接口在处理多样化请求参数方面的最佳实践,从而更好地设计和实现 RESTful API,提高应用的健壮性和用户体验。无论是初学者还是有一定经验的开发者,都能从中获得有价值的信息和技术指导。
2. 实战案例
2.1 基本数据类型
@GetMapping("/p1")
public int p1(int id) {
return id ;
}
这也可以是其它的基本数据类型;但是,当我们没有传id参数时,这将抛出异常,如下:
意思是:参数id可以没有,但由于它被声明为原始类型,因此无法转换为 null
值。建议将其声明为其对应的对象包装类型。
所以,这里我们可以将参数类型改成对应的包装类Integer(注意返回值也要改)。
2.2 对象类型
public User save(User user) {
return user ;
}
不要怀疑是不是漏了@RequestBody注解?没有,Spring MVC支持将请求的各个参数绑定到对象中的属性中,如下示例:
而且,这种形式的对象参数也可以进行基于注解的参数验证,如下:
public class User {
private Long id ;
private String name ;
private Integer age ;
// getters, setters
}
接口添加注解
public User save( User user)
请求该接口,不填写name属性
2.3 Map参数
@GetMapping("")
public Map<String, Object> save(
@RequestParam Map<String, Object> params) {
return params ;
}
注意:你希望接收Map类型的参数,那么就必须添加 @RequestParam 注解。
这里并不会对数据类型进行转换,一律按照字符串处理。
2.4 List参数
public List<Long> save( List<Long> ids) {
return ids ;
}
通过如下方式传值,参数名都一样即可
参数值也可以是以 "," 分割的参数。
Spring 内置了非常多的类型转换器,只要有对应的转换器它都能够进行处理。
2.5 日期类型
public Date date(
Date date) {
return date ;
}
这里我们必须添加 @DateTimeFormat 注解,并且设置pattern值,否则将抛出无法转换的错误。
日期的类型还可以是java8中的类型,如下:
public LocalDate date2(LocalDate date) {
return date ;
}
这时候,我们并不需要添加任何其它的注解也能正常的工作,如下示例: