@PathVariable(key)
:当请求格式为/user/{id}
时,传进来的参数可以利用该注解:
还有一种方法可以直接将多个参数包装成一个Map
变量,即:
这个map将会储存路径中所有的可变参数@RequestHeader
:用于处理请求头@RequestParam
:用于处理请求参数@CookieValue
:用于处理Cookies,以上几个注解都可像第一个一样,用Map来封装对应参数@RequestBody
:可用于储存POST请求的请求体,可以将POST请求的数据封装在一个POJO实例中:
但是这种方法只能接收原生的application/json
格式的数据,并且只能接收固定实例所有的属性,在面对结构比较复杂的数据时,有一定的局限性
还有一种方法,可以利用Map封装数据的方式,来接收客户端传来的Json数据
,但是要注意数据的类型:
- 如果
Map
以@RequestBody
为注释,则只能接收application/json
- 如果以
@RequestParam
修饰,则可以接收application/x-www-form-urlencoded
和multipart/form-data
的数据
@RequestPart(key)
:用于上传文件:
@PostMapping("img")
public String upload(
@RequestPart("image") MultipartFile img
) throws IOException {
if (!img.isEmpty()){
String originalFilename = img.getOriginalFilename();
System.out.println(originalFilename);
img.transferTo(new File("D:\\img\\"+originalFilename));
return "success";
}
return "empty";
}
}
MultipartFile
类可用流来保存文件,也可以调用transferTo(File)
来保存等等
上传文件时可能会报如下错误:
The field image exceeds its maximum permitted size of 1048576 bytes.
错误表示文件太大,可在配置文件中加入以下两个配置项
spring.servlet.multipart.max-file-size=10MB #最大单文件大小
spring.servlet.multipart.max-request-size=100MB #最大请求大小