@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只能用字符串接收

相关文章
feign发起url请求日期序列化问题
feign发起url请求日期序列化问题
345 0
|
Java 微服务 Spring
FeignClient GET请求方式无法解析对象参数
FeignClient GET请求方式无法解析对象参数,报java.lang.IllegalArgumentException: method GET must not have a request body
1192 0
feign使用url参数传参@SpringQueryMap使用
feign使用url参数传参@SpringQueryMap使用
252 0
|
XML JSON Java
权威分析@RequestParam和@RequestPart 的区别(官方文档)
一、今天写了两个文件上传的接口用到了@RequestParam和@RequestPart @RequestPart /** * 单文件上传 * @param file * @par...
9897 0
|
存储 中间件 关系型数据库
数据库切片大对决:ShardingSphere与Mycat技术解析
数据库切片大对决:ShardingSphere与Mycat技术解析
1242 0
|
搜索推荐 Java 开发者
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 问题处理
【5月更文挑战第14天】org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 问题处理
4239 1
|
XML JSON Java
通过 Feign 进行文件上传
通过 Feign 进行文件上传
651 7
|
Java Apache
BeanUtils.copyProperties()用法总结
BeanUtils.copyProperties()用法总结
|
Java 编译器 Maven
SpringBoot(二)之parent解析
默认配置spring-boot-maven-plugin,简化构建spring-boot的构建流程。
666 1
|
Java 编译器 Maven
@Data@NoArgsConstructor@AllArgsConstructor 这几个常用注解什么意思?
@Data@NoArgsConstructor@AllArgsConstructor 这几个常用注解什么意思?
1188 1