@RequestPart 和@RequestParam的区别

在 Spring Boot 中,@RequestPart@RequestParam 注解都可以用于接收客户端提交的数据,但它们有一些区别。

@RequestParam 注解用于获取请求参数的值,常用于接收简单的表单数据。它可以用来接收 URL 查询参数、表单字段以及多部分表单提交的数据。当使用 @RequestParam 时,请求的 Content-Type 应该是 application/x-www-form-urlencodedmultipart/form-data

示例:

@PostMapping("/example")
public void example(@RequestParam("name") String name,
                    @RequestParam("age") int age) {
    // 处理请求参数
}

@RequestPart 注解用于从请求中获取一个或多个部分(part)。它主要用于处理多部分表单提交的数据,例如上传文件。当使用 @RequestPart 时,请求的 Content-Type 应该是 multipart/form-data

示例:

@PostMapping("/upload")
public void upload(@RequestPart("file") MultipartFile file,
                   @RequestPart("metadata") String metadata) {
    // 处理上传的文件和元数据
}

总结区别:

  • @RequestParam 用于获取请求参数的值,适用于接收简单的表单数据。
  • @RequestPart 用于获取请求的部分(part),适用于处理多部分表单提交的数据,特别是上传文件。

需要注意的是,当使用 @RequestPart 接收多部分表单数据时,MultipartFile 对象需要和 Content-Disposition 中的 name 属性值一致,用于匹配请求中的对应部分。

你可能感兴趣的:(Java,java,开发语言)