@SpringQueryMap 、@RequestPart 、@RequestParam 比较与说明

简介: @SpringQueryMap 、@RequestPart 、@RequestParam 比较与说明

@RequestPart

    @RequestPart这个注解用在multipart/form-data表单提交请求的方法上。支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过http协议传输的

@RequestParam

    @RequestParam支持’application/json’,也同样支持multipart/form-data请求

区别

    当请求方法的请求参数类型不是String 或 MultipartFile / Part时,而是复杂的请求域时,@RequestParam 依赖Converter or PropertyEditor进行数据解析, RequestPart参考 ‘Content-Type’ header,依赖HttpMessageConverters 进行数据解析

    当请求为multipart/form-data时,@RequestParam只能接收String类型的name-value值,@RequestPart可以接收复杂的请求域(像json、xml);@RequestParam 依赖Converter or PropertyEditor进行数据解析, @RequestPart参考'Content-Type' header,依赖HttpMessageConverters进行数据解析

前台请求:

    jsonData为Person对象的json字符串

    uploadFile为上传的图片

后台接收:

        @RequestPart可以将jsonData的json数据转换为Person对象


@RequestMapping("jsonDataAndUploadFile")

@ResponseBody

public String jsonDataAndUploadFile(@RequestPart("uploadFile") MultiPartFile uploadFile,

                                    @RequestPart("jsonData") Person person) {

    StringBuilder sb = new StringBuilder();

    sb.append(uploadFile.getOriginalFilename()).append(";;;"));

    return person.toString() + ":::" + sb.toString();

}

@RequestParam对于jsonData的json数据只能用String字符串来接收

@RequestMapping("jsonDataAndUploadFile")

@ResponseBody

public String jsonDataAndUploadFile(@RequestPart("uploadFile") MultiPartFile uploadFile,

                                    @RequestParam("josnData") String jsonData) {

    StringBuilder sb = new StringBuilder();

    sb.append(uploadFile.getOriginalFilename()).append(";;;"));

    return person.toString() + ":::" + sb.toString();

}

@SpringQueryMap

其实是在使用Feign调用时,对Get请求参数的一个实体封装传递。可对传递的多个参数进行,实体参数的封装。

总结

当请求头中指定Content-Type:multipart/form-data时,传递的json参数,@RequestPart注解可以用对象来接收,@RequestParam只能用字符串接收

相关文章
|
XML JSON Java
权威分析@RequestParam和@RequestPart 的区别(官方文档)
一、今天写了两个文件上传的接口用到了@RequestParam和@RequestPart @RequestPart /** * 单文件上传 * @param file * @par...
10444 0
SpringBoot之文件上传(单文件与多文件上传的使用)
SpringBoot之文件上传(单文件与多文件上传的使用)
607 1
|
JSON Java 数据格式
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
649 6
|
XML Java 测试技术
使用 @Transactional 控制事务边界:传播和隔离解释
本文深入解析了 Spring 框架中的 `@Transactional` 注解,重点介绍了事务管理中的传播行为与隔离级别。内容涵盖事务的基本概念、声明式事务管理、回滚机制、传播模式(如 REQUIRED、REQUIRES_NEW 等)及隔离级别(如 READ_COMMITTED、SERIALIZABLE),并通过示例说明如何在实际开发中灵活应用这些特性,以确保数据一致性与系统性能的平衡。适合 Java 开发人员深入理解 Spring 事务机制。
923 1
使用 @Transactional 控制事务边界:传播和隔离解释
|
XML JSON Java
通过 Feign 进行文件上传
通过 Feign 进行文件上传
1541 7
|
Java Spring
SpringBoot 实战 不同参数调用不同实现
本文介绍了如何在实际工作中根据不同的入参调用不同的实现,采用`map+enum`的方式实现优雅且严谨的解决方案。通过Spring Boot框架中的工厂模式或策略模式,避免了使用冗长的`if...else...`语句。文中详细展示了定义接口、实现类、枚举类以及控制器调用的代码示例,确保用户输入的合法性并简化了代码逻辑。
757 1
SpringBoot 实战 不同参数调用不同实现
|
XML JSON Java
springboot文件上传,单文件上传和多文件上传,以及数据遍历和回显
本文介绍了在Spring Boot中如何实现文件上传,包括单文件和多文件上传的实现,文件上传的表单页面创建,接收上传文件的Controller层代码编写,以及上传成功后如何在页面上遍历并显示上传的文件。同时,还涉及了`MultipartFile`类的使用和`@RequestPart`注解,以及在`application.properties`中配置文件上传的相关参数。
springboot文件上传,单文件上传和多文件上传,以及数据遍历和回显
|
SQL 关系型数据库 MySQL
一文速学-玩转MySQL中INTERVAL关键字和INTERVAL()函数用法讲解
一文速学-玩转MySQL中INTERVAL关键字和INTERVAL()函数用法讲解
1704 0
一文速学-玩转MySQL中INTERVAL关键字和INTERVAL()函数用法讲解
|
存储 前端开发 Java
如何使用 Spring 上传文件:全面指南
如何使用 Spring 上传文件:全面指南
1806 1
Springboot byte[] 转 MultipartFile ,InputStream 转 MultipartFile
Springboot byte[] 转 MultipartFile ,InputStream 转 MultipartFile
2280 0

热门文章

最新文章