Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导控制器多参数(<;列表>;和多部分文件)对象_Java_Spring Boot_Controller - Fatal编程技术网

Java Spring引导控制器多参数(<;列表>;和多部分文件)对象

Java Spring引导控制器多参数(<;列表>;和多部分文件)对象,java,spring-boot,controller,Java,Spring Boot,Controller,您好,我正在寻找,如果我只能处理一个RestController方法多个参数。。。 用控制器的方法可以做到。。。但我找不到有2个这样的项目 @PostMapping(value ="upload") public upload(@RequestParam MultipartFile file,@RequestParam List<String> myParams ){ some code here .... return;

您好,我正在寻找,如果我只能处理一个RestController方法多个参数。。。 用控制器的方法可以做到。。。但我找不到有2个这样的项目

@PostMapping(value ="upload")
    public upload(@RequestParam MultipartFile file,@RequestParam List<String> myParams ){
     some code here ....
        return;
    }
@PostMapping(value=“upload”)
公共上载(@RequestParam MultipartFile file,@RequestParam List myParams){
这里有一些代码。。。。
返回;
}

我只是想知道这是否也是一个很好的练习。。。在同一个控制器中有两种不同类型的对象,如果可能的话,您需要指定变量的名称

  @PostMapping(value ="upload")
  public upload(
    @RequestParam(value = "file") MultipartFile file, 
    @RequestParam(value = "myParams") List<String> myParams 
  ){
      some code here ....
      return;
   }
@PostMapping(value=“upload”)
公开上传(
@RequestParam(value=“file”)多部分文件,
@RequestParam(value=“myParams”)列出myParams
){
这里有一些代码。。。。
返回;
}

简单回答:是的,这是可能的。
但正如你所要求的良好实践,这里有一些背景:

了解HTTP实际上是如何传输数据的非常有帮助

如果您的请求使用GET作为请求方法,则参数将作为查询字符串添加到URL中。可能是这样的:
http://example.com/index?param1=value1¶m2=value2

在本例中,Spring将查询字符串中的键值对映射到方法参数。但这只适用于文本

如果使用的是POST,则数据将在请求正文中发送。编码方式取决于数据的媒体类型。例如,默认的媒体类型
application/x-www-form-urlencoded
将数据编码为与上面相同的查询字符串

如果要上载混合类型表单数据(如文件/blob)以及一些文本参数,则应使用
多部分/表单数据
对数据进行编码

只要请求主体包含键值格式,Spring Boot仍然能够通过
@RequestParam
区分和映射参数(如果键值与属性名称没有差异,您甚至不需要为
属性指定名称)


我强烈建议您查看
@RequestBody
@RequestPart
注释,因为我认为对整个请求体(或者更确切地说是语义上的表单)使用模型类(DTO)通常是最佳做法,特别是当有许多参数需要处理时。

非常有用的答案!!非常感谢。