Spring 引导控制器多个参数(<List> 和多部分文件)对象
Spring Boot Controller Multiple parameters (<List> and multipart file) object
你好,我正在寻找是否可以仅使用一个 RestController 方法处理多个参数...
使用控制器方法可以完成...但我找不到类似 2 的项目。
@PostMapping(value ="upload")
public upload(@RequestParam MultipartFile file,@RequestParam List<String> myParams ){
some code here ....
return;
}
我只是想知道这是否也是一种好的做法...在同一个控制器中使用两种不同类型的对象,如果可能的话,有什么想法吗????
您需要指定变量的名称。
@PostMapping(value ="upload")
public upload(
@RequestParam(value = "file") MultipartFile file,
@RequestParam(value = "myParams") List<String> myParams
){
some code here ....
return;
}
简单回答:是的,这是可能的。
但是当你要求好的做法时,这里有一些背景:
了解 HTTP 实际传输数据的方式非常有帮助。
如果您的请求使用 GET 作为请求方法,参数将作为查询字符串添加到 URL。可能看起来像这样:http://example.com/index?param1=value1¶m2=value2
在这种情况下,Spring 将键值对从查询字符串映射到您的方法参数。但这仅适用于文本。
如果您使用 POST,数据将在请求正文中发送。编码方式取决于数据的媒体类型。例如,默认媒体类型 application/x-www-form-urlencoded
会将数据编码为与上述相同的查询字符串。
如果您想上传 file/blob 等混合类型的表单数据以及一些文本参数,您的数据应使用 multipart/form-data
.
编码
只要请求体包含键值格式,Spring Boot 仍然可以通过 @RequestParam
区分和映射参数(如果键与您的不同属性名称,您甚至不需要为 value
属性分配名称)。
我强烈建议您查看 @RequestBody
和 @RequestPart
注释,因为我认为最好的做法是对整个模型使用 class (DTO)请求正文(或者更确切地说是语义上的形式),尤其是在有很多参数要处理的情况下。
你好,我正在寻找是否可以仅使用一个 RestController 方法处理多个参数... 使用控制器方法可以完成...但我找不到类似 2 的项目。
@PostMapping(value ="upload")
public upload(@RequestParam MultipartFile file,@RequestParam List<String> myParams ){
some code here ....
return;
}
我只是想知道这是否也是一种好的做法...在同一个控制器中使用两种不同类型的对象,如果可能的话,有什么想法吗????
您需要指定变量的名称。
@PostMapping(value ="upload")
public upload(
@RequestParam(value = "file") MultipartFile file,
@RequestParam(value = "myParams") List<String> myParams
){
some code here ....
return;
}
简单回答:是的,这是可能的。
但是当你要求好的做法时,这里有一些背景:
了解 HTTP 实际传输数据的方式非常有帮助。
如果您的请求使用 GET 作为请求方法,参数将作为查询字符串添加到 URL。可能看起来像这样:http://example.com/index?param1=value1¶m2=value2
在这种情况下,Spring 将键值对从查询字符串映射到您的方法参数。但这仅适用于文本。
如果您使用 POST,数据将在请求正文中发送。编码方式取决于数据的媒体类型。例如,默认媒体类型 application/x-www-form-urlencoded
会将数据编码为与上述相同的查询字符串。
如果您想上传 file/blob 等混合类型的表单数据以及一些文本参数,您的数据应使用 multipart/form-data
.
只要请求体包含键值格式,Spring Boot 仍然可以通过 @RequestParam
区分和映射参数(如果键与您的不同属性名称,您甚至不需要为 value
属性分配名称)。
我强烈建议您查看 @RequestBody
和 @RequestPart
注释,因为我认为最好的做法是对整个模型使用 class (DTO)请求正文(或者更确切地说是语义上的形式),尤其是在有很多参数要处理的情况下。