springboot 不同请求方式下接收List 入参总结

目录

第一种方式:使用@ModelAttribute 注解 + 对象接收 

第二种方式: 使用 @RequestParam 注解接收

第三种方式:利用数组接收

第四种方式:post 传Json

第五种方式: @RequestBody 加 对象 接收

第六种方式: 接收list对象

第七种方式:  利用String 接收然后参数,然后在后台强转


第一种方式:使用@ModelAttribute 注解 + 对象接收 

1. get 请求  入参为 projectIds=1,2,3

2. @RequestMapping("/analysis") 或者 @GetMapping("/analysis") 使用 @ModelAttribute 注解 

@RequestMapping("/analysis")
public JsonResult queryList (@ModelAttribute PhoneStatisticalAnalysisReq req) {
    List<PhoneStatisticalAnalysis> result = phoneStatisticalAnalysisService.queryAnalysis(req);
    return  JsonResult.ok(result);
}
3.创建一个请求对象,并提供对应的 get set方法 用于注入 参数值 
public class PhoneStatisticalAnalysisReq {

    private List<Long> projectIds;

    public List<Long> getProjectIds() {
        return projectIds;
    }

    public void setProjectIds(List<Long> projectIds) {
        this.projectIds = projectIds;
    }

}

4. 结果

第二种方式: 使用 @RequestParam 注解接收

1. get 请求

2.@RequestMapping("/analysis") 或者 @GetMapping("/analysis") 使用 @RequestParam("projectIds")   注解中的参数一定要和 请求地址中的参数一致

    @RequestMapping("/analysis")
    public JsonResult queryList ( @RequestParam("projectIds")  List<Long> projectIds) {
      ...
    }

    传递多个参数

    @RequestMapping("/analysis")
 public JsonResult queryList ( @RequestParam("projectIds")  List<Long> projectIds,
                               @RequestParam("projectId") Integer projectId) {
   ....
    }

3.结果展示

第三种方式:利用数组接收

1. get请求

2.  @RequestMapping("/analysis") 或者 @GetMapping("/analysis")  用数组 接收 名称和 请求参数一一对象即可

    @RequestMapping("/analysis")
    public JsonResult queryList ( Long[] projectIds, Integer projectId) {
     ....
    }

3. 结果

第四种方式:post 传Json

1.post方式请求: json 传送  入参 [1,2,3] 

2. 发送请求 请求参数为 必须加入 @RequestBody  List<Long> projectIds 注解

    @PostMapping("/analysis")
    public JsonResult queryList (@RequestBody List<Long> projectIds) {
    ....
    }

3.结果

第五种方式: @RequestBody 加 对象 接收

1.post Json 请求

2.@RequestBody 加对象 

    @RequestMapping("/analysis")
    public JsonResult queryList (@RequestBody PhoneStatisticalAnalysisReq req) {
....
    }

      对象 :

   public class PhoneStatisticalAnalysisReq {

    private Long projectId;

    private List<Long> projectIds;


    public Long getProjectId() {
        return projectId;
    }

    public void setProjectId(Long projectId) {
        this.projectId = projectId;
    }

    public List<Long> getProjectIds() {
        return projectIds;
    }

    public void setProjectIds(List<Long> projectIds) {
        this.projectIds = projectIds;
    }

   
}

3.结果

第六种方式: 接收list<T>对象

1.请求方式 post json

[
    {
    "projectId":"1",
    "projectIds":[2,3]
    },
    {
    "projectId":"2",
    "projectIds":[4,5]
    }
]

2. @RequestBody List<PhoneStatisticalAnalysisReq> req

 @RequestMapping("/analysis")
    public JsonResult queryList (@RequestBody List<PhoneStatisticalAnalysisReq> req) {
....
    }

3. 结果

第七种方式:  利用String 接收然后参数,然后在后台强转

1. get请求

2. 关于强转成list 这里就不做过多赘述

    @RequestMapping("/analysis")
    public JsonResult queryList (String  params) {
    ....
    }

3. 结果

  • 14
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: Spring Boot可以通过以下方式接收List对象: 1. 使用@RequestParam注解接收List参数 例如,如果你的Controller方法需要接收一个List<String>类型的参数,可以使用@RequestParam注解来接收: ``` @GetMapping("/test") public String test(@RequestParam List<String> list) { // do something with the list return "success"; } ``` 2. 使用@RequestBody注解接收List对象 如果你需要接收一个复杂的List对象,可以使用@RequestBody注解来接收: ``` @PostMapping("/test") public String test(@RequestBody List<User> userList) { // do something with the userList return "success"; } ``` 其中,User是一个自定义的Java类,用于表示List中的元素。 需要注意的是,使用@RequestBody注解接收List对象时,需要将请求体中的数据转换为List对象。如果请求体中的数据格式不正确,会导致转换失败。因此,建议在发送请求时,使用正确的数据格式。 ### 回答2: Spring Boot 是一个基于 Spring 框架的开源 Java EE 项目,它通过提供默认配置、依赖管理、自动配置等特性简化了 Spring 框架的开发。在 Spring Boot 中,我们可以方便地使用 Spring MVC 来处理 HTTP 请求和响应。当接收到一个 list 对象时,我们可以通过以下方式来处理: 1. 使用 @RequestParam 注解 可以使用 @RequestParam 注解来指定请求参数的名称和默认值,并将其绑定到 list 类型对象中。例如,我们可以在控制器方法中添加 @RequestParam 注解,如下所示: ``` @GetMapping("/list") public String getList(@RequestParam("ids") List<Long> ids) { // ... } ``` 此时,我们只需要在 URL 中添加 ids 列表参数即可,例如:/list?ids=1&ids=2&ids=3。Spring Boot 会自动将参数绑定到 List<Long> ids 对象中。 2. 使用 @RequestBody 注解 另一种处理 list 对象的方式是使用 @RequestBody 注解。这个注解可以将 HTTP 请求的 body 转换为对象,我们可以在参数上添加该注解,如下所示: ``` @PostMapping("/list") public String updateList(@RequestBody List<User> users) { // ... } ``` 在上述示例中,我们定义了一个 POST 接口,它的请求 body 中有一个包含 User 对象的列表,Spring Boot 会自动将 body 转换为 List<User> 类型对象。 总之,Spring Boot 提供了许多方便的方式来处理 list 对象,开发者可以根据实际需要使用不同的方式来解决问题。同时,我们需要注意在接收list 对象时,要做好参数校验和类型转换,以避免出现异常情况。 ### 回答3: Spring Boot 是一个基于 Spring 框架的 Web 应用程序开发框架,它使得我们可以更加简便快捷地构建高效的 Web 应用程序。当我们需要接收一个 List 对象时,Spring Boot 提供了很多种方法来实现这个功能。 首先,我们需要在我们的 Java Bean 中定义一个 List 对象,并提供相应的 getter 和 setter 方法。这个 List 对象的类型可以是任何合法的 Java 对象,例如一个简单的 String 对象或者是一个复杂的自定义对象。 其次,在我们的 Spring Controller 类中,我们可以使用 @RequestBody 注解来标识这个 List 对象需要从请求正文中获取。该注解表示 Spring Boot 将会自动将 HTTP 请求正文对应成一个 Java 对象,并将其传递给 Controller 方法的参数中。例如: ``` @PostMapping("/users") public ResponseEntity<Void> createUser(@Valid @RequestBody List<User> users) { // Do something with the User List object... return ResponseEntity.ok().build(); } ``` 上面的代码片段中,我们在用户请求 /users 这个接口时会去接收一个 List<User> 类型的请求正文,然后将这个 List 对象传递给 createUser() 这个方法。在这个方法中,我们可以使用该 List 对象完成任何自己想要完成的功能。另外还需要注意的一点是,我们可以使用 @Valid 注解来验证这个 List 对象是否合法,例如:这个 List 对象中是否存在 null 值、是否存在重复元素等等。 除了 @RequestBody 注解之外,我们还可以使用 @RequestParam 注解来接收一个 List 对象。这个注解表示 Spring Boot 将会将请求参数与控制器方法的参数进行匹配,并将它们转换为一个 List 对象。例如: ``` @GetMapping("/users") public ResponseEntity<Void> getActiveUsers(@RequestParam(name = "ids") List<Long> userIds) { // Do something with the userIds List object... return ResponseEntity.ok().build(); } ``` 上面的代码片段中,我们定义了一个 userIds 的请求参数,该参数是一个 List<Long> 类型的对象。当我们请求 /users 这个接口并将请求参数 ids 设定为 1,2,3 时,Spring Boot 将会自动将这些参数转换为一个 List<Long> 对象,并将其传递给 getActiveUsers() 这个方法。 在接收 List 对象时,我们还需要注意一点,那就是请求正文和请求参数的数据格式必须要和接收方定义的数据格式相同。例如,如果请求正文的数据格式是 JSON 格式,而接收方定义的数据格式是 XML 格式,那么 Spring Boot 就不会自动将请求正文转换为所需要的 Java 对象,这时我们就需要手动进行数据格式的转换。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值