@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...
10108 0
feign使用url参数传参@SpringQueryMap使用
feign使用url参数传参@SpringQueryMap使用
335 0
|
SQL
SpringCloud - Feign调用返回对象不为null,但属性全为null
SpringCloud - Feign调用返回对象不为null,但属性全为null
2119 0
|
Web App开发 XML Java
SpringMVC使用MultipartResolver和MultipartFile实现文件上传
SpringMVC使用MultipartResolver和MultipartFile实现文件上传
1828 0
|
6月前
|
前端开发 Java
Java实现微信公众号发送通知
Java实现微信公众号发送通知
410 61
|
12月前
|
Cloud Native Java Nacos
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
4613 14
|
XML JSON Java
通过 Feign 进行文件上传
通过 Feign 进行文件上传
1046 7
|
XML JSON Java
springboot文件上传,单文件上传和多文件上传,以及数据遍历和回显
本文介绍了在Spring Boot中如何实现文件上传,包括单文件和多文件上传的实现,文件上传的表单页面创建,接收上传文件的Controller层代码编写,以及上传成功后如何在页面上遍历并显示上传的文件。同时,还涉及了`MultipartFile`类的使用和`@RequestPart`注解,以及在`application.properties`中配置文件上传的相关参数。
springboot文件上传,单文件上传和多文件上传,以及数据遍历和回显
|
缓存 监控 NoSQL
阿里二面: BigKey、HotKey 问题严重,该如何 预防和解决
BigKey(大key)和HotKey(热key)的问题是较常见。 这类问题不止会使服务的性能下降,还会影响用户正常使用功能,甚至会造成大范围的服务故障,故障有时还会发生连环效应,导致更加严重的后果,发生系统的雪崩,**造成巨大的经济损失,巨大的品牌损伤
阿里二面: BigKey、HotKey 问题严重,该如何 预防和解决