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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: @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只能用字符串接收

相关文章
Kam
|
前端开发
request.getParameter("**")获取不到值:
request.getParameter("**")获取不到值
Kam
1874 0
|
2月前
|
JSON Java 数据格式
@RequestParam与@RequestBody使用对比
@RequestParam与@RequestBody使用对比
52 8
@RequestParam()和@PathVariable()的区别
@RequestParam()和@PathVariable()的区别
|
3月前
request.getParameter()与request.getAttribute()
request.getParameter()与request.getAttribute()
|
4月前
|
Java Spring
@RequestParams是这作用?
@RequestParams是这作用?
|
10月前
request.getParameter、request.getParameterValues、request.getParameterMap用法
request.getParameter、request.getParameterValues、request.getParameterMap用法
|
11月前
|
前端开发 Java 数据安全/隐私保护
解决通过request.getParam()方法获取到的值为null的问题~
解决通过request.getParam()方法获取到的值为null的问题~
225 0
|
XML SQL JSON
@PathVariable、@RequestBody、@RequestParam、@ResponseBody、@Param的详解和用法
@PathVariable、@RequestBody、@RequestParam、@ResponseBody、@Param的详解和用法
152 0
|
Java API Spring
@RequestParam和@PathVariable的区别
@RequestParam注解获取URL中携带的请求参数的值既URL中“?”后携带的参数,传递参数的格式是:key=value;@PathVariable注解用于获取URL中路径的参数值,参数名由RequestMapping注解请求路径时指定,常用于restful风格的api中,传递参数格式:直接在url后添加需要传递的值即可
171 0
|
XML JSON Java
详解@RequestParam和@RequestBody
你好看官,里面请!今天笔者讲的是@RequestParam和@RequestBody。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。
446 3
详解@RequestParam和@RequestBody