你好,我正在寻找,如果我只能处理一个restcontroller方法多个参数。。。用控制器的方法可以做到。。。但我找不到有2个这样的项目。
@PostMapping(value ="upload")
public upload(@RequestParam MultipartFile file,@RequestParam List<String> myParams ){
some code here ....
return;
}
我只是想知道这是否也是一个很好的练习。。。在同一个控制器中有两种不同类型的对象,如果可能的话,有什么想法吗????
2条答案
按热度按时间e5nqia271#
您需要指定变量的名称。
3zwtqj6y2#
简单回答:是的,这是可能的。
但当你要求良好的实践时,这里有一些背景:
理解http实际上是如何传输数据的非常有帮助。
如果您的请求使用get as request方法,那么参数将作为查询字符串添加到url中。可能是这样的:
http://example.com/index?param1=value1¶m2=value2
在本例中,spring将查询字符串中的键值对Map到方法参数。但这只适用于文本。如果您使用的是post,那么数据将在请求主体中发送。其编码方式取决于数据的媒体类型。例如,默认媒体类型
application/x-www-form-urlencoded
将数据编码为与上述相同的查询字符串。如果您想上传混合类型的表单数据,比如一个文件/blob以及一些文本参数,您的数据应该用
multipart/form-data
.只要请求主体包含键值格式,spring boot仍然能够通过
@RequestParam
(如果键与属性名没有区别,则甚至不需要为value
属性)。我强烈建议你去看看
@RequestBody
以及@RequestPart
我认为,最好的做法是对整个请求体(或者更确切地说是语义上的表单)使用模型类(model class,dto),特别是在有大量参数要处理的情况下。